python异常处理
python异常处理
- 异常捕获
- 使用except捕获异常时,不但捕获指定类型的错误,还会捕获到其子类异常
- 可以跨越多层调用,即捕获到方法下调用的方法的异常
- 调用栈
- 错误堆栈: 记录错误,并通过logging模块配置可被打印到日志文件中
- 如果错误没有被捕获,它就会一直往上抛,最后被Python解释器捕获,打印一个错误信息,然后程序退出
捕获已知异常
s1 = input("请输入一个字符:") try: int(s1) except IndexError as e: print(e) except KeyError as e: print(e) except ValueError as e: print(e)
捕获未知异常
s1 = input("请输入一个字符:") try: int(s1) except Exception as e: print(e)
异常处理完整结构
try: pass # 主代码块 except KeyError as e: pass # 出现该异常时执行 else: pass # 主代码块执行完,执行该块(若捕获到异常,则不执行该句) finally: pass # 无论异常与否,最终执行该块(不论try、except、else是否出现异常,该句都会执行)
抛出异常
s1 = input("请输入一个字符:") try: if len(s1) != 1: raise Exception(KeyError) # 抛出KeyError异常 except Exception as e: # 捕获异常 print(e)
自定义异常
class MyException(Exception): def __init__(self, code, msg): self.error_code = code self.error_msg = msg def __str__(self): return self.error_code, self.error_msg try: raise MyException(3000, ‘自定义异常‘) except MyException as e: print(e.error_code, e.error_msg)
相关推荐
kevinweijc 2020-08-18
kikaylee 2020-08-18
寻常白昼 2020-08-15
shunelly 2020-08-09
liangzhouqu 2020-07-28
JessePinkmen 2020-07-26
xiaoxiaoniaoer 2020-07-21
Lexan 2020-06-22
heimicms 2020-06-14
tianyafengxin 2020-06-08
lynjay 2020-06-06
cenylon 2020-06-04
lqxqust 2020-06-03
宿舍 2020-05-29
Wonder的学习 2020-05-11
明天你好 2020-05-09
阿艾辣悟叩德 2020-05-06
致终将努力的我们 2020-05-05