python 捕获异常,python捕获异常后处理
无论是新手还是有经验的程序员,都会遇到程序报错终止执行的情况。python的错误信息可以分为以下两类。
语法错误、语法错误异常和异常显示如下
#语法错误
2 x 2
文件 stdin ,第1行
2 x 2
^
语法错误:无效语法
#异常
#除数为0的异常
2/0
回溯(最近一次呼叫):
模块中文件 stdin 的第1行
ZeroDivisionError:除以零
#未定义变量的异常
a=1
回溯(最近一次呼叫):
模块中文件 stdin 的第1行
名称错误:未定义名称“a”
如果不熟悉基本语法,可能会写出有语法错误的代码,这是新程序员常犯的错误,而例外则是因为考虑不充分。比如除数为0,开发者可能在第一次测试被除数不为0的情况下认为代码没问题。但是当有很多项目要处理,某天处理了一个带除数的事务,代码报错,这时才意识到代码有bug。这也是软件开发不能一步完成,而是不断迭代升级的原因。只有代码处理项目足够多,范围足够广,才能发现现有代码的不足,并做出改进。
处理代码中可能出现的异常可以增加程序的健壮性。在python中,异常是由try捕获的.except语句。基本用法如下
定义计算(a,b):
.尝试:
.数量=a/b
.除了ZeroDivisionError:
.print([警告] {}为零。格式(b))
.如果a=0,则num=float(inf ),否则为float(-inf )
.退货数量
.
calc(2,1)
2.0
calc(2,0)
[警告] 0是零
inftry语句的具体原理如下
将可能有异常的语句放在try代码块中,用except捕获相应的异常。可以有许多except语句,它们对应于许多不同类型的异常。当try中的一条语句用尽异常时,程序会根据异常类型执行相应的except语句。基本上不可能记住所有的异常类型。在实际开发中,往往是根据经验先设置几种可能的异常类型。当遇到超出范围的异常时,会修改代码并捕获相应的异常。
Try语句有两个可选语句。
只有当try中的代码没有引发异常时,才会执行elsefinallyelse语句;在正常执行try语句或处理异常后,将执行finally语句,如下例所示。
定义计算(a,b):
.尝试:
.数量=a/b
.除了ZeroDivisionError:
.print([警告] {}为零。格式(b))
.如果a=0,则num=float(inf ),否则为float(-inf )
.除了类型错误:
.num=float(a)/float(b)
.除了:
.上升
.否则:
.print({}/{}=={} )。格式(a,b,num))
.最后:
.打印(结果是{} 。格式(数字))
.退货数量
.
# try语句没有抛出异常,else最后执行。
calc(2,1)
2/1==2.0
结果是2.0
2.0
# try语句抛出异常,else语句不执行,except处理异常,最后执行。
calc(2,0)
[警告] 0是零
结果是inf
中程核力量
# try语句抛出异常,else语句不执行,except处理异常,最后执行。
calc(2 ,1)
结果是2.0
2.0
# try语句抛出异常,但没有对应的except来处理异常,程序终止,else和finally不执行。
calc(a,1)
回溯(最近一次呼叫):
模块中文件 stdin 的第1行
名称错误:未定义名称“a”
在实际开发中,第一次编码只需要处理已知的异常类型,然后会根据遇到的错误调整代码。
目标
—如果你喜欢,分享给你的朋友—
关注我们,解锁更多精彩内容!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。