45-异常(2)

3. 自定义异常:

  • 自定义一个异常class,默认继承ExceptionError
  • raise 抛出一个自定义的异常class的对象
    class PasswordException(Exception):
     
        def __init__(self,pw,min_length):
            self.password=pw
            self.min_length=min_length
     
        def __str__(self):
            return "%s的密码错误,密码的最小长度为%s"%(self.password,self.min_length)
     
    def reg(username,password):
        if len(password) < 6:
            raise PasswordException(password,6)#抛出你指定的异常
        else:
            print("用户名为:%s,密码为:%s"%(username,password))
     
    try:
        #reg("zs","1245678")
        reg("zs","124")
    except Exception as ex: #两个except 会按照顺序先执行第一,如果第一个满足异常类型条件,进入第一excep。不会进入后面的except。
        print("第一个except")
        print(ex)
    except PasswordException as ex:
     
        print("第二个exceph")
     
        print(ex)

对异常总结一下:

  • try 放在可能会出错的代码块处,except捕捉并处理相应类型的异常,ExceptionError捕捉所有类型的异常
  • 一旦捕捉到一个异常, 立即跳转至相应类型的except,跳过顺序执行的代码段
  • 多个except会按照顺序依次捕捉相应类型的异常,但只会执行一个except就跳出当前的try---except区 (以"一个try---多个except"作为一个异常捕获区)
  • else 是当try部分没有发生异常才执行,这个else可以没有
  • 只要进入了当前这个try-except区,并且本区内写了finally,就一定会执行;当然finally也可以不写
  • 注意到:若当前没有处理异常,将会向上层抛,直至抛到ExceptionError,由解释器处理
原文地址:https://www.cnblogs.com/LS1314/p/8504600.html