python-错误和异常-捕获异常
1.try
python中,捕获异常使用try ... except ...这种语法来捕捉异常,下面是一个异常捕获的示例
#coding=utf-8 def test(a, b): try: print(a/b) except ZeroDivisionError: print("0不能作分母") if __name__ == '__main__': test(10, 5) test(10, 0)
运行结果:
2
0不能作分母
那些你担心不安全的代码,就可以放在try子句中,也就是try和except之间。
2.except
2.1 捕获异常时不提示
def test(a, b): try: print(a/b) except (ZeroDivisionError, ValueError): return None if __name__ == '__main__': test(10, 5) test(10, 0)
运行结果:2
2.2 逐个捕获异常
def test(a,b): try: print (a/b); except ZeroDivisionError: print('0不能做分母') except ValueError: print("类型错误") else: print('什么异常都没发生') if __name__ =='__main__': test(10,5) test(10,0)
运行结果:
2
什么异常都没发生
0不能做分母
3.finally
你可以在finally语句块里做清理操作,因为不论try子句里是否发生异常,也不论你在except语句块里做了什么操作,总之,最终一定会执行finally语句块里的代码,这就保证了这里的代码最后一定会被执行,所以,清理收尾的工作一定会进行。
你可以在这里输出日志,你可以做任何你想做的事情。
def divide(x, y): try: result = x / y except ZeroDivisionError: print("division by zero!") else: print("result is", result) finally: print("executing finally clause") if __name__ == '__main__': divide(10, 5) divide(10, 0)
运行结果:
('result is', 2) executing finally clause division by zero! executing finally clause