异常捕获
一、最常见的错误——除数为 0:
num1 = 20
num2 = 0
num3 = num1 / num2
print(num3)
# 输出结果:
#
# ZeroDivisionError: division by zero
二、try … except 语句:
1. 语法格式:
try:
可能出错的代码块
except [异常对象]:
异常处理代码块
如:
num1 = 20
num2 = 0
try:
num3 = num1 / num2
except ZeroDivisionError:
print("除数不可以为 0 ")
# 输出结果:
#
# 除数不可以为 0
· 如果无法预知会出现哪种异常,可以省略“异常对象”,直接使用如下实例代码:
num1 = 20
num2 = "abc"
try:
num3 = num1 / num2
except:
print("除数错误")
2. try … except … else … 语句:
该语句表示出现异常时执行 except 段中的代码,当无异常时执行 else 段中的代码。如:
num1 = 20
num2 = 1
try:
num3 = num1 / num2
except ZeroDivisionError:
print("除数不可以为 0 ")
except TypeError:
print("除数类型不对")
else:
print("无异常,会被执行")
三、常见的异常类型:
1. AttributeError:某个对象没有属性;
2. Exception:通用型异常对象;
3. FileNotFoundError:找不到文件;
4. IOError:输入输出异常;
5. IndexError:索引异常;
6. KeyError:键异常;
7. NameError:对象名称异常;
8. SyntaxError:语法错误;
9. TypeError:类型错误;
10. ValueError:值错误。
四、捕捉多个异常:
语法格式:
try:
可能出错的代码块
except 异常对象1:
异常处理代码块
except 异常对象2:
异常处理代码块
五、一个 except 捕捉多个异常:
语法格式:
try:
可能出错的代码块
except (异常对象1, 异常对象2, ...):
异常处理代码块
六、直接抛出异常:
num1 = 20
num2 = 0
try:
num3 = num1 / num2
except ZeroDivisionError as e:
print('异常:', e)
except TypeError as e:
print('异常:', e)
else:
print("无异常,会被执行")
# 输出结果:
#
# 异常: division by zero
七、finally 语句:
try … except 语句也可以和 finally 语句配合,格式如下:
try:
可能出错的代码块
except:
代码出错执行的代码块
else:
代码正常执行的代码块
finally:
无论代码是否有异常出现都会执行的的代码块
· finally 语法需要与 try 语句配合使用,无论是否有异常都会执行该语句内容。
八、Python 异常捕获扩展:
1. 使用 raise 抛出异常;
2. 使用 traceback 模块记录异常信息至文件;
3. 程序断言 assert。