异常处理

异常处理的基本语法:

try:
    error
except NameError:
    print('遇到异常时执行这里')

以上就是一个单分支单异常的处理,这种方式是异常处理中最常用的.除了单分支单异常,还有下面几种

单分支多异常:

try:
     被检测的代码块
except (异常类型1,异常类型2.....):
     try中一旦检测到以上异常类型,就执行这里

except后加一个元组,元组中为多种异常类型,即可实现单分支处理多异常.

缺点在于无法知道具体的类型种类,处理不同的异常执行的操作一样

多分支:

try:
     被检测的代码块
except 异常类型1:
     try中一旦检测到异常类型1,就执行这里
except 异常类型2:
     try中一旦检测到异常类型2,就执行这里

多分支就可以实现对不同的异常类型采取不同的操作.

else:

try:
     被检测的代码块
except 异常类型1:
     try中一旦检测到异常类型1,就执行这里
except 异常类型2:
     try中一旦检测到异常类型2,就执行这里
else:
    在所有except中的内容都没有执行时,执行这里

finally:

def func():
    try:
            print('try')
            return
    except Exception:
            print('报错')
    finally:
            print('finally')
func()

finally中的语句无论怎样都会执行,即使try中就已经返回值,但还是会打印finally

finally通常用于归还系统资源,关闭文件

as:

try:
    error
except Exception as exp:
    print(exp)

使用as来将错误信息赋给一个变量,通过这个变量就可以查看错误信息

万能异常Exception:

  • Exception为万能异常,能够处理任何种类的异常.
  • Exception一般与as连用,通过as来获取异常信息,查看异常信息来得知问题.
  • 万能异常永远写在多分支处理异常的最后一个,否则Exception后的异常相当于没写,全部会被Exception处理.
  • 但是异常处理应该使用最贴近的类型来处理异常,不应该乱用Exception.

自定义异常:

通过定义一个类,继承BaseException来成为一个异常类,类中定义一个__init__方法和__str__方法.

通过关键字raise来抛出异常

class Errorcls(BaseException):
    def __init__(self,name):
        self.name = name
    def __str__(self):
        return self.name
raise Errorcls('error')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值