一:常见的内置异常
- 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")