Python_base_04 异常捕捉
表现形式:
try:
可能出现异常的代码块
except Exception as 变量名:
遇到异常时的处理方式
打印变量
异常处理中使用else
含义:
如果没有捕获到异常,则执行else中的代码块
表现形式:
try:
可能出现异常的代码块
except Exception:
遇到异常时的处理方式
else:
没捕获到异常时执行的代码块
示例:
1 try: 2 print("abcdefg") 3 except Exception: 4 print("---已知晓异常---") 5 else: 6 print("程序无异常") 7 print("Hello World")
运行结果:
abcdefg 程序无异常 Hello World
异常处理中使用finally
含义:
无论是否捕获到异常,最后都需执行finally中的代码块
表现形式:
try:
可能出现异常的代码块
except Exception:
遇到异常时的处理方式
else:
没捕获到异常时执行的代码块
finally:
最后一定会执行的代码块
示例:
1 try: 2 f = open("test.txt","r") 3 except Exception: 4 print("---已知晓异常---") 5 else: 6 print("程序无异常") 7 finally: 8 f.close() 9 print("Hello World")
运行结果:
---已知晓异常--- Traceback (most recent call last): File "F:/untitled/Python_jichu/异常.py", line 8, in <module> f.close() NameError: name 'f' is not defined
说明:
因为不存在test.txt文件,所以f.close()会报错退出
替换错误类型,并打印出错误信息,如下图:
finally 是不管有没有异常,都会执行的。