捕获异常与抛出异常
1 基本异常捕捉语句语法
try:
代码模块1
except:
代码模块2
exemple:
1 def print_dict(dic): 2 i = 0 3 try: 4 len1 = len(dic) 5 while i<len1: 6 print(dic.popitem()) 7 i+=1 8 except: 9 print("传值类型错误")
print_dict({1:'a', 2:'b'})
print_dict([1, 2, 3])
to exect
知识点:
-
-
- 执行try语句,代表捕捉异常机制开始
- 执行代码块1若没有出错,忽略后续except关键字和代码块2,代码正常执行完毕
- 若执行代码块1发生异常,则终止代码块1内剩余后续代码执行,转到except处
- except关键字捕捉到异常信息,并执行代码块2(往往给出错误提示或做出错误后的问题处理),异常处理结束。
-
2 带finally子拒的异常处理
try:
代码模块1
except:
代码模块2
finally:
代码模块3
说明:finally关键字后的代码模块3,实现代码模块1是否出错都会执行的代码功能
exemple1:
1 try: 2 1/0 3 4 except: 5 print("除数不能为0") 6 finally: 7 print("程序运行结束")
to exect
exemple2:
1 try: 2 print(1/2) 3 except: 4 print("除数不能为0") 5 finally: 6 print("程序执行结束")
to exect
example3:
1 import sys 2 try: 3 1/0 4 except: 5 print("除数不能为0") 6 sys.exit() 7 finally: 8 print("程序执行结束") 9 print("我能执行吗")
to exect
比较与分析:从示例1和示例2可以看出,无论整除是够出错(try中的代码块是否会出现异常),finally子句后的代码都会执行
示例3演示了1/3出发异常后,执行except子句里的print和sys.exit(),exit()要求退出该程序,
在程序退出前强制执行了finally子句的内容,然后再退出程序,没有执行最后一条print语句。
示例3明确的体现了finally子句的强制性。
抛出异常
1 i = "1" 2 if type(i) != int: 3 raise TypeError("类型错误")