Python异常处理
原创weixin_42566251 发布于2019-07-19 21:32:39 阅读数 16 收藏
展开
一、什么是异常?
异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。
一般情况下,在Python无法正常处理程序时就会发生一个异常。
异常是Python对象,表示一个错误。
当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
二、异常处理
捕捉异常可以使用try/except语句。
try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
如果你不想在异常发生时结束你的程序,只需在try里捕获它。
语法:
以下为简单的try…except的语法:
try:
尝试执行的代码
except:
出现错误的处理
代码块:
try:
num = int(input('请输入一个数字: '))
except:
print('请输入正确的整数')
1
2
3
4
程序及运行结果:
try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。
如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。
如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。
如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。
二、异常练习(try…finally语句)
需求:
1.提示用户输入一个整数
2.使用8来除以用户输入的数
try:
尝试执行的代码
except 错误类型1:
出现错误1的处理方式
except 错误类型2:
出现错误2的处理方式
代码块:
try:
num = int(input('请输入一个整数: '))
result = 8 / num
print(result)
except ValueError:
print('输入的值不是合法的整数')
except ZeroDivisionError:
print('0不能做除数')
except Exception as r:
print('未知错误 %s' %(r))
finally:
print('~~~~~~~~~~~~')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
程序及运行结果:
注意:try-finally 语句无论是否发生异常都将执行最后的代码。
三、触发异常
我们可以使用raise语句自己触发异常
raise语法格式如下:
raise [Exception [, args [, traceback]]]
语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,args 是自已提供的异常参数。
最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。
实例:
一个异常可以是一个字符串,类或对象。 Python的内核提供的异常,大多数都是实例化的类,这是一个类的实例的参数。
定义一个异常非常简单,如下所示:
def input_passwd():
pwd = input('请输入密码: ')
if len(pwd) >= 8:
return pwd
print('主动抛出异常')
ex = Exception('密码长度不足!')
raise ex
try:
print(input_passwd())
except Exception as r:
print(r)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
程序及运行结果:
注意:为了能够捕获异常,"except"语句必须有用相同的异常来抛出类对象或者字符串。
点赞
————————————————
版权声明:本文为优快云博主「weixin_42566251」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/weixin_42566251/article/details/96503352