python异常处理(python异常处理结构)

网友投稿 212 2022-06-24


关于异常

在程序运行中,总会遇到各种各样的错误,如打开一个不存在的文件,程序期待用户输入数字,但用户输入了字符串,网络传输终止等,如果不对这些可能引发异常的情况进行处理,就会导致抛出异常程序被终止,这样对用户体验来说是很不友好的,所以为保证程序的健壮性,有必要对一些可能引发异常地方进行异常处理。

如下我们打开一个不存在的文件:

异常语法

基本语法:

try:

被检测的代码块

except 异常类型:

处理异常

下面对打开文件异常进行处理

try:

f = open('a.test')

except FileNotFoundError as e:

print(e)

处理后效果如下:

有了上面的异常处理后,程序便不会抛出异常正常执行了,异常处理还可以进行多分支处理,如下:

上面的示例在except 中指定了FileNotFoundError、ValueError、AttributeError等。这是我们猜测可能会引发这些异常,如果异常不在我们的分支中我们则无法捕获对其进行处理了,上述只是在确定只有这几种异常不会出现其它异常的情况下使用,如果不能保证,我们可以使用万能的Except类,它可以接收所有异常。如下:

对比多分支和万能异常Exception:

多分支逻辑结构更加清晰明确,可以根据具体的异常解决对应的问题,但容易出现想的不全面,导致引发其它异常造成程序终止。万能异常Exception虽然可以接收所有异常,但它无法根据具体的异常去解决对应的问题,适用于无论引发什么异常我都执行一个结果,它们各有各的优点,也各有各的不足,多数情况我们可以将它们结合使用,如下:

下面来看两个比较有趣的else、finally

else:如果try没有捕获到异常,就执行else内的代码块,如果try捕获到了异常,else的代码块就不会被执行。

finally:无论try捕获到异常还是没捕获到异常都会被执行。

自定义异常

raise 可主动抛出异常。

asset断言:asset后面一般是一个表达式,如果表达式结果为True,不会触发断言,如果结果为False将触发断言AssertionError。

如下:引发断言

断言也属于异常,因此也可以使用try进行捕获,如下:

try:

assert 1<0

except:

print('触发断言')

这样程序就不会因为断言而终止了,断言一般用于参数检查,如果发现参数有误直接抛出断言终止,避免因为错误的参数导致程序的错误。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:数据预处理 —— padding数据(数据预处理的主要步骤包括)
下一篇:Django 设置admin后台表和App(应用)为中文名(django自带的数据库)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~