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

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

本文深入解析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 相关产品和应用

全部下载

专题列表