什么是python的异常处理
python的异常处理,简而言之就是当程序发生错误时,能够通过程序对错误进行捕捉,并处理,从而不会导致程序全盘崩溃!要怎么更好地理解呢?
python异常处理,就好像考试答题
通常情况下,考试的卷子上从头到尾不可能只有一道题(就像python的项目不可能只有一个功能),然后,题目有容易的有难的,甚至是有错的(就像程序可能是简单的也可能是复杂的),再加上参加考试的人的知识储备不同(用户的操作习惯不同),都可能导致有些题目答错了,或不会答(程序因为种种原因发生异常),这种情况下,我们不可能就卡在那道不会答的题目那里,然后直接放弃掉后面的那些题目,绝大多数的人会跳过这道题,然后继续答下去。python的异常捕捉处理程序也是如此,就是让程序暂时跳过发生异常的地方,然后继续执行下去,而不至于全盘崩溃。
python异常处理的基本机构
try:
pass
except Exception as err:
pass
异常处理的机制
· 如上异常处理的基本机构,python的程序由上往下执行,到了try这里,先执行try里面的代码块,如果没有发生异常,则跳过except里面的代码块,继续执行其他的;
· 如果在try里面的代码块当中发生了异常,那么在异常发生的下面的代码停止执行,并执行except里面的代码块,之后再继续往下执行其他的程序;
· 异常捕捉需要匹配正确的异常类型(Exception),否则异常无法正确捕捉,这时,异常捕捉的任务会传达到上一级的try...except代码块去处理,以此类推,直到无法捕捉而抛出异常,程序继而终止;
· 多个异常捕捉排列在一起时,程序也是自上而下执行,当异常一旦被捕捉,其他的except将不会继续执行;
· Exception是通用的异常类型,可以捕捉任何一种异常,尤其方便之处,不过也尤其弊端,比如无法正确记录错误日志等。
python异常捕捉的最基本的机制实例
def examination():
print('参加考试了!')
try:
print('这道题很容易,一下子就做完了!')
print('这道题很难!')
a = int('a12')
print('跟这道题杠上了!')
except ValueError as err:
print('还是先跳过这道题吧,先把容易的有把握的分先拿下!')
print('果然,下面的题很简单,考试不仅考大家的知识,还考大家的应对能力!')
examination()
————————————————————————
代码输出:
参加考试了!
这道题很容易,一下子就做完了!
这道题很难!
还是先跳过这道题吧,先把容易的有把握的分先拿下!
果然,下面的题很简单,考试不仅考大家的知识,还考大家的应对能力!
代码解析
· 如上代码,try里面的代码a = int('a12')中,int()函数转换非数值型数据会发生异常,因为使用了异常处理的结构,所以,当代码执行到这里时,异常被except ValueEroor捕捉,然后执行except里面的代码,之后再执行程序中其他的代码;
· ValueError是专门用来捕捉值异常的,如果使用了其他的异常类型将无法正确捕捉(除了Exception通用异常),那会怎么样呢?
网友评论