5.异常概述 异常: 不正常 程序在执行过程中发生了不可预知的问题. 导致程序崩溃 NameError TypeError ValueError AttribitueError SyntaxError IndexError 改- index() 1. try: 可能会出现异常问题的代码 except Exception as e: 当出现异常时,解决异常的代码 else: 当没有出现异常时,正常执行的代码 finally: 无论是否出现异常,都会执行这里的代码 语法糖 with open('a.txt','r') as f: f.read() 2. 异常的传递 当代码出现了很层级的调用时,在其中发生了异常,如果没有处理这个异常,这个异常会自动向上抛出 如果上层也没有处理,那么再继续向上抛出,直到抛到解释器,解释器默认处理异常的方式就是中断程序, 将异常信息显示控制台上 6. 异常处理 语法: try: 可能出现异常的代码 except Exception: 当异常发生时,处理异常的代码 7. 多个异常的处理 将多个异常通过圆括号包裹成一个元组 语法: try: 可能出现异常的代码 except (异常1,异常2,...): 当异常发生时,处理异常的代码 7-1: 异常别名-获取异常信息 语法: try: 可能出现异常的代码 except (Exception,... )as e: print(e) 当异常发生时,处理异常的代码 8. else:(可选的,理解) 在异常处理时,当没有异常发生的情况后,需要执行的代码,放到 else 语句块 9. finally:(可选的,掌握) 无论异常是否发生,都会执行这个语句块里的内容 应用: 一般应用在资源需要关闭资源的场景上 比如:文件的关闭,网络连接的关闭,数据库的关闭 10. 异常的传递 在发生异常时,异常的发生点可能在很深的函数调用过程中,这时如果不处理异常的话,异常会被一层一层的抛出 如果谁都没有处理,最终抛给解释器,解释是没办法处理异常,解释会将异常信息显示到终端 11. 自定义异常 格式: class 异常名Error(Exception): def __init__(self,msg=''): self.__msg = msg def __str__(self): return self.__msg class CustomError(Exception): pass 12. 自定义异常的抛出 raise 异常对象 raise 类名 raise 类名()