开发中总会出现各种各样的错误,错误的出现总会造成程序终止。但有时错误是因为数据造成的,不希望错误使终止程序,更期待程序可以继续运行。此时,我们就可以使用异常捕获来处理。
在Python中,异常可以用try捕获,并用except决定如何处理捕获的错误。当然也可以主动检查语法错误,来抛出异常,可以用raise 强制触发异常。但需要注意,try语句必须配合except语句或者finally语句使用,except语句可以有多个,但finally语句只能有1个。同时,可以配合else语句使用。
P 1、try…except…语句
应用实例:
try: print(1/0)except ZeroDivisionError: print('数据错误:被除数为零')# 输出数据错误:被除数为零
上面是单独捕获ZeroDivisionError异常,也可以捕获任何错误,如下:
try: print(1/0)except: print('出现异常') # 输出出现异常
捕获多个异常,可以在except后增加想捕获的异常类型元组,如下:
try: raise AssertionError() # 这里使用raise强制制造一个断言错误,用于下面的异常处理except (ZeroDivisionError,AssertionError): print('错误')# 输出错误
或者对他们做分别捕获,从而确定是哪个错误引起的,如下:
try: raise AssertionError()except ZeroDivisionError: print('数据错误:被除数为零')except AssertionError: print('断言错误')# 输出断言错误
没发生异常的情况下执行一定的语句,可以增加else语句。如下:
try: print(1/2)except: print('有异常')else: print('无异常')# 输出无异常
P2、try…finally…语句
我们处理需要关闭的对象时,经常会忘记关闭对象,或者因为程序错误而无法关闭对象。此时,可以用finally来保证对象关闭。如下是一个文件对象的处理例子:
f = open('test','w')try: pass # 程序处理代码finally: f.close() print('文件关闭')# 输出:文件关闭
当然,也可以配合except处理响应的错误,如下:
f = open('test','w')try: pass # 需要捕获异常代码部分except: pass # 异常处理部分finally: f.close() print('文件关闭')# 输出:文件关闭
同样的,也可以增加else语句,来处理没有错误触发时的一些操作。
f = open('test','w')try: pass # 需要捕获异常代码部分except: print('有异常') # 有异常执行部分else: print('无异常') # 无异常执行部分finally: f.close() # 无论有没有异常,都要执行的部分# 输出无异常
-------------------------它是数字世界里的一把杀猪刀
却总能巧夺天工
它的世界是纯粹0、1组合
却总能创造无尽幻想
......
本公众号关注数据价值分析、编程学习,将不定期更新社会热点数据分析结果、编程技巧,分享数据分析工具、方法、学习等内容,欢迎有兴趣的小伙伴加入。