Python 异常处理

当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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值