Python异常处理、自定义异常与断言机制详解

落日邮差
落日邮差
发布时间:2026-10-13| 6人浏览过
原创

本文深入解析Python中的异常处理机制,涵盖try、except、else和finally语句的具体用法,以及如何捕获多个异常。同时介绍如何继承Exception类创建自定义异常,并详细阐述assert断言在程序调试中的应用场景与原理,帮助开发者提升代码健壮性。

Python异常处理概述

本文详细解析Python中异常处理、自定义异常以及断言(assert)的原理与具体用法,旨在为读者提供清晰的参考指南。

  • 当程序运行过程中遇到非预期状况时,系统会抛出异常。例如,函数仅能处理可转换为整型的对象,若传入无法转换的数据类型,程序将报错并抛出异常。
  • Python中常见的内置异常类型包括以下几种:

常见内置异常类型

ValueError:当传入的参数值无效或错误时触发。

TypeError:对数据类型执行了不支持的操作时触发。

IndexError:访问序列索引时,该索引超出范围。

NameError:尝试使用尚未定义的变量时触发。

 

如需了解更详尽的异常类型,可查阅Python官方文档,建议开发者定期阅读官方文档以掌握最新规范。


  • Python通过try、except、finally和else关键字组合来处理异常,各部分功能如下:

try-except-else-finally语法详解


try:
  s=input("请输入要int的字符串:")
  i=int(s)
except ValueError as e:
  print(e)
else:
  print("这里是当没有发生异常时的操作")
finally:
  print("这里是即使发生异常也会执行的代码")

"""第一次运行结果:
请输入要int的字符串:123
这里是当没有发生异常时的操作
这里是即使发生异常也会执行的代码
"""
"""第二次运行结果
请输入要int的字符串:abc
invalid literal for int() with base 10: 'abc'
这里是即使发生异常也会执行的代码
"""
  • 在一条except语句中可以捕获多个异常,但必须将多个异常类型用括号包裹。需要注意的是,由于异常会导致程序流程终止,因此即使列出了多个异常,实际也只会捕获到第一个发生的异常,故只需一个变量来接收异常对象即可:。
  • 若无法确定具体会抛出何种异常,可以使用基类Exception(更底层可使用BaseException)进行捕获。通常建议将Exception处理放在所有特定except子句的最后,以确保兜底:。

  • 使用raise关键字可以主动抛出自定义的异常信息。
  • 只需继承Exception类,即可定义属于自己的异常类:。

自定义异常类的实现


class myException(Exception):
  def __init__(self,msg):
     self.message=msg
  def __str__(self):###这里就是异常的字符串信息
    return self.message

try :
  raise myException("我的异常")#py3

except myException as e:
  print(e)
  
"""
结果:
我的异常
"""

  • 断言的意义在于:与其让程序在运行深处崩溃,不如在出现错误条件时立即终止(例如,老司机开车前应先判断路况,而非开出去才发现交警在等待)。

assert断言机制与应用


police=False
assert police ==False
print("老司机开车啦,呜呜呜")


police=True
assert police ==False
print("老司机开车啦,呜呜呜")#报错,AssertionError

更多关于Python的实用技巧,可查看本站专题:《Python入门与进阶经典教程》、《Python字符串操作技巧汇总》、《Python列表(list)操作技巧总结》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》及《Python文件与目录操作技巧汇总》。

希望本文所述内容能对您的Python程序设计工作有所帮助。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。