python 异常总结:raise except
raise 语句是用来 主动 抛出一个指定的异常。
raise语法格式:raise [Exception [, args [, traceback]]]
raise 主动抛出异常种类总结:
- except 有 匹配的error 类型
- except 无 匹配的error 类型
- 自定义error
- 未捕获异常,程序报错
# >>>>>>>>>>>>>>>>>示例<<<<<<<<<<<<<<<<< # 主动抛出异常,异常类参数为空 try: raise Exception() except Exception as e: print(e) # >>>>>>>>>>>>>>>>>示例<<<<<<<<<<<<<<<<< # 主动抛出异常,异常类有参数; try: raise IndexError('错误了。。。') except IndexError as a: print(a) except Exception as e: print(e) # >>>>>>>>>>>>>>>>>示例<<<<<<<<<<<<<<<<< # 多个except时,按照顺序检查;先匹配那个就先用哪个 try: a=2 if a > 1: raise ValueError('值大于1') except ZeroDivisionError: print("ZeroDivisionError") except ValueError: print("ValueError") except Exception: print("Exception") # >>>>>>>>>>>>>>>>>示例<<<<<<<<<<<<<<<<< # 自定义error 需继承自 Exception 类,可以直接继承,或者间接继承 class WupeiqiException(Exception): def __init__(self, msg): self.message = msg def __str__(self): return self.message try: raise WupeiqiException('我的异常') except WupeiqiException as e: print(e) class MyError(Exception): def __init__(self, value): self.value = value def __str__(self): return repr(self.value) try: raise MyError(2*2) except MyError as e: print('exception:', type(e)) print('My exception occurred, value:', type(e.value)) # >>>>>>>>>>>>>>>>>示例<<<<<<<<<<<<<<<<< # 抛出的异常与except不匹配,报错 try: x = 10 if x > 5: raise Exception('x 不能大于 5。x 的值为: {}'.format(x)) except ZeroDivisionError: print("Exception") # 有异常,报错 x = 10 if x > 5: raise Exception('x 不能大于 5。x 的值为: {}'.format(x))