1 什么是异常
异常是一个事件,该事件会在程序执行过程中发生,影响程序的正常执行,一般情况下,在 Python 无法正常处理程序时就会发生异常。Python脚本发生异常时,我们需要捕获并处理异常,否则程序会终止执行。
Python中重要的内建异常类型:
- exception :常规错误的基类
- AttributeError:对象没有这个属性
- IOError:输入/输出操作失败
- IndexError:序列中没有此索引
- KeyError:映射中没有这个键
- NameError:未声明/初始化对象(没有属性)
- SyntaxError:Python语法错误
- SystemError:一般解释器系统错误
- ValueError:串入无效的参数
2 捕获单个异常
在程序开发中,如果对某些代码的执行不能确定是否正确,可以增加try来捕获异常,捕获异常最简单的语法格式:
try:
<语句1> # 尝试执行的代码
except <异常类型1>:
<语句2> # 如果在try部分引发了异常
比如:
def exp_exception(x, y):
try :
a = x/y
print ( “a = ” , a)
return a
except Exception :
print ( “程序出现异常,异常信息:被除数为0!” )
print (exp_exception( 6 , 0 ))
3 捕捉多个异常
捕获异常最简单的语法格式:
try:
<语句1> # 尝试执行的代码
except <异常类型1>:
<语句2> # 如果在try部分引发了异常
except <异常类型2>:
<语句3> # 如果在try部分引发了异常
比如:
def mult_exception():
try :
# 提示用户输入一个整数
num = int ( input ( “请输入一个整数:” ))
result = 8 /num
print (result)
except ZeroDivisionError :
print ( “除0错误!” )
except ValueError :
print ( “请输入正确的整数!” )
mult_exception()
4 块捕捉多个异常
指一个try对应一个except子句,同时捕捉一个以上的异常 except ( 异常类型1 ,异常类型2,……) 。比如:
def model_exception():
try :
b = name
a = x/y
except ( ZeroDivisionError , NameError , Type Error ):
print ( “z这个异常是ZeroDivisionError / NameError / TypeError” )
model_exception( 2 , 0 )
5 异常捕获的完整语法
在实际开发中,为了能够处理复杂的异常情况,完整的异常语法如下:
try:
<语句1> # 尝试执行的代码
except <异常类型1>:
<语句2> # 如果在try部分引发了异常
except <异常类型2,异常类型3>:
<语句3> # 如果在try部分引发了异常
except Exception as result:
print(“未知错误:%s” % result) # 打印错误信息
else:
<语句4> # 只有在没有异常才会执行的代码
finally:
<语句5> # 无论是否有异常,都会执行的代码