关于python的异常处理,这个在工作中应用很重要。
我们编写的程序难免会出现bug,那么,如何在程序出现bug的时候避免程序退出,能让程序平滑的运行,这对我们软件使用的人机交互,是一件很重要的事情。
Python常见异常类型
一:使用try……except处理异常
1:基本语法:
try:
可能产生异常的代码块
except [ (Error1, Error2, ... ) [as e] ]:
处理异常的代码块1
except [ (Error3, Error4, ... ) [as e] ]:
处理异常的代码块2
except [Exception]:
处理其它异常
对,你没看错,except处理异常可以有多个。
从上边的语法中我们也可以看到,except对应的[]中可以有多种异常类型,那就说明,一个except可以处理多种异常。
当程序发生不同的意外情况时,会对应特定的异常类型,Python 解释器会根据该异常类型选择对应的 except 块来处理该异常。
2:示例
try:
a = int(input("输入被除数:"))
b = int(input("输入除数:"))
c = a / b
print("您输入的两个数相除的结果是:", c )
except (ZeroDivisionError):
print("除数为0")
except (ValueError, ArithmeticError):
print("程序发生了数字格式异常、算术异常之一")
except :
print("未知异常")
print("程序未中断")
这是一个可交互的示例:可用于测试不同的异常类型
输出:
输入被除数:1
输入除数:0
除数为0
程序未中断
二:使用try……except……else处理异常
1:基本语法:
try:
可能产生异常的代码块
except [ (Error1, Error2, ... ) [as e] ]:
处理异常的代码块1
except [ (Error3, Error4, ... ) [as e] ]:
处理异常的代码块2
except [Exception]:
处理其它异常
else:
执行未出现异常执行的程序
注意:Else 必须配合 try……except使用,没有 try……else这个语法
2:示例
我们还是使用上个示例简单的修改一下
try:
a = int(input("输入被除数:"))
b = int(input("输入除数:"))
c = a / b
except (ZeroDivisionError):
print("除数为0")
except (ValueError, ArithmeticError):
print("程序发生了数字格式异常、算术异常之一")
except :
print("未知异常")
else:
print("您输入的两个数相除的结果是:", c)
print("程序未中断")
输出:
输入被除数:10
输入除数:5
您输入的两个数相除的结果是: 2.0
程序未中断
三:使用try……except……else……finally处理异常
1:语法
try:
可能产生异常的代码块
except [ (Error1, Error2, ... ) [as e] ]:
处理异常的代码块1
except [ (Error3, Error4, ... ) [as e] ]:
处理异常的代码块2
except [Exception]:
处理其它异常
else:
执行未出现异常执行的程序
finally:
无论 try 块是否发生异常,最终都要进入 finally 语句,并执行其中的代码块。
注意,和 else 语句不同,finally 只要求和 try 搭配使用,而至于该结构中是否包含 except 以及 else,对于 finally 不是必须的(else 必须和 try except 搭配使用)。
2:示例
try:
a = int(input("输入被除数:"))
b = int(input("输入除数:"))
c = a / b
except (ZeroDivisionError):
print("除数为0")
except (ValueError, ArithmeticError):
print("程序发生了数字格式异常、算术异常之一")
except :
print("未知异常")
else:
print("您输入的两个数相除的结果是:", c)
finally:
print("进入finally中……")
print("程序未中断")
输出:
输入被除数:10
输入除数:5
您输入的两个数相除的结果是: 2.0
进入finally中……
程序未中断
四:总结
我目前是做PHP开发,PHP中对应错误处理的方式是:
try{}catch(Exception $e){}
一般这个添加这个就是为了处理未知的错误
已知可能出现的错误,我们一般可能在正常的逻辑代码中使用if做了判断
那么我想我在python中想我在使用PHP中类似的错误处理逻辑应该也是没有问题的。
嗯,后期再实际开发中遇到了问题,会再来补充的。
有好的建议,请在下方输入你的评论。