Python异常捕获

python中的异常

在python编程中会出现许多的程序错误,程序在遇到这种错误时会直接终止程序,导致一个程序,因为一个小错误直接结束运行

print12/0

异常是指在语法正确的前提下,程序运行时报错就是异常。

异常的捕获

当Python中发生异常时我们如果不希望程序终止执行,就需要捕获处理它。
捕获异常的方法:

try:
...代码..
except 异常类型:
   ...处理异常代码...

程序顺序执行try中的代码,如果try中代码报错,则终止执行try中的代码,如果出现的错误类型与所写的异常类型相符则执行exception中处理异常的代码,这样就成功捕获异常,可以通过对异常的判断,解决问题。
如果try中报错的代码发生的错误与写的异常类型不同,是不能捕获异常,处理异常的代码也不会执行程序会直接结束
如果try中没有报错,则不执行except中的代码。

如何捕获多个异常

如果一段代码中可能会触发多个异常,我们可以写一个try多个except来捕获多个异常。

try:
执行的代码...
except 异常类型:
处理异常代码1
except 异常类型 :
处理异常代码2
except 异常类型:
处理异常代码3

出现错误的时候会自动匹配一个与异常相同的类型,然后执行代码,其他异常的处理代码就不会执行,如果匹配不到类型则会直接结束程序

try:
执行的代码...
except(异常类型1,异常类型2,异常类型3):
处理异常代码...

这样也可以一次捕获多个异常,当满足一个异常类型,就会执行异常处理代码

如何捕获所有异常

try :
...代码...
except Exception :
  ...处理异常代码...

如果except后不写异常类型,或者写Exception,就是所有的异常都会触发异常处理代码(Exception是所有异常的父类,所以所有异常都会触发他)

将异常实例化

try :
执行代码...
except: 异常类型 as 变量名:
执行异常...

变量名也可以叫做异常的对象,一般使用e 来表示,e对象中包含了异常信息的一些描述,我们可以根据描述做不同的处理。
每一种异常就是一个类(继承Exception类),这种方法就是将异常实例化,这样就可以对异常进行一些操作

try :
执行代码...
except: 异常类型1 as 变量名:
处理异常代码...
...
else:
   ...代码...

如果try中没有抛出异常则执行else中的代码,如果try中抛出了异常则不会执行else中的代码,会匹配异常类型,如果能匹配上会执行异常代码,匹配不上会终止程序
(写else一定要有except否则包语法错误)

try :
执行代码...
except: 异常类型1 as 变量名:
处理异常代码...
...
finally:
   ...代码...

不管try中是否抛出异常,最终都会执行finally中的代码。

人为制造异常

raise 异常类型(‘描述信息’)

当程序执行到raise是,会自动的触发异常,让程序结束,或者执行except,就相当于人为创造一个异常

自定义异常

当程序中的异常类型不满足时,我们可以自定义类型异常。
每个异常就是一个类,自定义异常就是写一个这样的类。

class Yichang (Exception):
Def __init__(self ,msg):
           self.msg=msg
Def __str__(self)return str(self.msg)

自定义好了异常,一般自定义的异常需要与raise一起使用,用raise Yichang(‘描述信息’)来触发异常,然后用except Yichang:来写遇到这个异常执行的代码,或者用except :Yichang as 变量名将异常实例化,然后对异常进行读取,或者操作

tryraise Yichang (‘自定义异常’)
except Yichang :
     ...处理异常代码...
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值