通常情况下,在try语句块中写我们想要的逻辑,发生错误和异常时Python解释器会采用raise方法即将异常抛出,except语句可以承接raise方法抛出的异常并对异常做出处理。Python中有三种异常捕获与处理形式:
第一种:try…except…形式,如下例子。
def division(a, b):
try:
return a / b # 出现异常会扔出一个异常对象(rasie ...Error('错误信息'))
except TypeError as err: # 接扔出来的对象,err=...Error('错误信息')
print(err)
except ZeroDivisionError as err:
print(err)
except Exception as err:
print(err)
第二种:try…except…else…形式,如下例子。else语句块只有在try语句块没有发生异常才会执行到,所以有return的需求必须写在else语句块内。
try:
...
except:
...
else: # try没有异常会执行
...
return #有return语句必须写在这
第三种:try…except…finally…形式,如下例子。finally语句块无论try语句块有没有抛出异常都会执行。所以有return的需求可以写在try语句块内也可以写在finally语句块内。
try:
...
return # return语句可以写在这
except:
...
finally: # 无论有没有异常都会执行的代码
...
return # 如果此处有return,前面的return将不执行