1、什么是异常
- 当我们运行一个程序时,如果python解释器遇到错误,会停止程序的运行,并返回一个错误信息,这就是异常。
- 程序停止运行并提示错误信息,这个过程我们称之为抛出(raise)异常。
2、捕获异常
- 在程序开发中,如果不能确定某些代码是否能正确的运行,可以增加try来捕获异常。
- 捕获异常的语法格式:
try:
尝试执行的代码
except:
出现错误的处理
2.1、错误类型捕获
- 在程序运行过程中,可能会出现不同的错误类型,针对不同的错误类型,需要我们做出不同的反应,这样就用的了错误类型的捕获。
- 语法如下:
try:
尝试执行的代码
except 错误类型1:
针对错误类型1,需要进行的处理
except 错误类型2:
针对错误类型2,需要进行的处理
except 错误类型3:
针对错误类型3,需要进行的处理
except Exception as result:
针对未知错误类型,需要进行的处理
- 当异常抛出时,最后一行错误信息的第一个单词就是,错误类型。
2.2、异常捕获完整语法
try:
尝试执行的代码
except 错误类型1:
针对错误类型1,需要进行的处理
except 错误类型2:
针对错误类型2,需要进行的处理
except 错误类型3:
针对错误类型3,需要进行的处理
except Exception as result:
针对未知错误类型,需要进行的处理
else:
没有异常才会执行的代码
finally:
无论程序正确或错误都需要运行的代码
3、异常的传递
- 异常的传递---当函数/方法的执行出现异常,会将异常传递给函数/方法调用一方。
- 如果传递到主程序,还没有进行处理,异常会被抛出。
- 在函数的主程序中可以增加异常捕获,而这个主函数中调用的函数出现异常,都会传递到这个主函数的异常捕获中。
- 这样可以保持代码的整洁性。
4、抛出异常
- python中内置了一个Exception的异常类。
- 在开发是如果满足特定业务的需求时,希望抛出异常,可以:
- 创建一个Exception对象。
- 使用关键字raise抛出异常对象。
def input_password(): pwd = input('请输入一个密码') if len(pwd) >= 8: return pwd print('主动抛出异常') # 创建异常对象 ex = Exception('密码长度小于8') # 主动抛出异常 raise ex try: input_password() except Exception as r: print(r)
在函数中主动抛出异常,在运行代码时进行异常捕获,这是两个步骤,需要分开写。