一:常见的内置异常

  • BaseException: 所有异常的基类
  • Exception:几乎所有的异常类都是从它派生而来的。
  • AttributeError:引用属性或给它赋值失败时引发。
  • OSError 操作系统不能执行指定的任务(如打开文件)时引发,有多个子类。
  • IndexError:使用序列中不存在的索引时引发,为LookupError的子类。
  • KeyError:使用映射中不存在的键触发,为LookupError的子类。
  • NameError:找不到名称(变量)时引发。
  • SyntaxError:代码不正确时引发。
  • TypeError:将内置操作或函数用于类型不正确的对象时引发的。
  • ValueError:将内置操作或函数用于这样的对象时引发:其类型正确但包含的值不合适。
  • ZeroDivisionError:在除法或求模运算的第二个参数为零时引发。
  • AssertionError:断言语句失败
  • RuntimeError:一般的运行时错误

二:自定义异常

class BusinessError(Exception):
    def __init__(self, code, value):
        self.code = code
        self.value = value

    def __str__(self):
        return repr(self.code + ' ' + self.value)

三:基础使用

try:
    raise BusinessError('500', "抛出一个自定义异常")
except BusinessError as err:
    print("BussinessError: {0}".format(err))
except ValueError:
    print("ValueError")
except:
    print("unexcepted error")
    # 不处理异常,再次抛出去
    raise
else:
    # else中的代码发生异常不会执行except代码块
    print("else")
finally:
    print("finally")