Python 异常处理

那年仲夏 提交于 2020-01-24 04:37:00

当Python检测到一个错误时,解释器就无法继续执行了,而且出现了一些错误的提示,这就是所谓的异常。

异常处理

  • 在错误易发代码段前加入try异常处理。
num已定义,无异常
num未定义,异常
NameError
try
step_1
except
捕获异常后的补偿处理
step_2
try:
       	print(num)				#变量num未定义,异常类型为‘NameError’。
        print('step_1')

except NameError:
        print('捕获异常后的补偿处理')

print('step_2')
>>>
捕获异常后的处理
-----2-----

由于num处出现异常,故未执行‘-----1-----’,取而代之的是替补方案‘捕获异常后的处理’,随后继续运行“-----2-----”。

多异常处理

无异常
有异常
NameError等
Exception
有无异常均执行
try
else
except
已列出的异常类型
未列出的异常类型
finally
try:
        #open('xxx.txt')
        #print(num)
        print('-----1-----')

except (FileNotFoundError,NameError):
        print('变量或文件不存在')
except Exception as ret:
        print('发生了其余类型的异常')
        print(ret)                      #返回异常原因
else:
        print('无异常时执行该内容')
finally:
        print('无论有无异常均执行')

print('-----2-----')

异常传递

  • 里层嵌套函数出现异常时,异常会一级一级向上传递,直到传递到有异常处理的嵌套层。
  • 如果嵌套异常传递结束后,仍未发现try异常处理,则交由Python解释器做报错处理。

自定义异常

通过定义一个继承Python底层异常处理父类的子类对象来实现异常处理的自定义。

class Self_define(Exception):
        def __init__(self,lenth,atleast):
                self.lenth = lenth
                self.atleast = atleast

def main():
        try:
                s = input('请输入:')
                if len(s) < 3:
                        #raise手动触发自定义异常
                        raise Self_define(len(s),3)
                        
        except Self_define as result:		#result变量与异常绑定
                print('Self_define:输入的的长度是%d,长度至少应是%d'%(result.lenth,result.atleast))
        else:
                print('无异常发生')

main()
>>>
请输入:23
Self_define:输入的的长度是2,长度至少应是3
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!