目录
03、try ... except ... finally语句
一、语法格式
try:
可能出现错误的代码块
except:
出错之后执行的代码块
else:
没有出错的代码块
finally:
不管有没有出错都执行的代码块
01、try ... except 语句
- 将可能出错的代码放到try里面,except可以指定类型捕获异常。except里面的代码是捕获到异常时执行,将错误捕获,这样程序就不会因为一段代码包异常而导致整个程序崩溃。
-
示例1:捕获ZeroDivisionError异常
-
示例2:捕获所有类型的异常
02、try ... except ... else语句
- 没有捕获到异常时才执行else语句
-
示例
03、try ... except ... finally语句
-
示例:
04、try嵌套
05、自定义异常
- 自定义异常,都要直接或间接继承Error或Exception类。
- 由开发者主动抛出自定义异常,在python中使用raise关键字
二、Python内置异常类型表格
异常 | 导致的错误 |
---|---|
AssertionError | 当assert语句失败时引发 |
AttributeError | 当属性分配或引用失败时引发 |
EOFError | 当input()函数达到文件结束条件时引发 |
FloatingPointError | 当浮点运算失败时引发 |
GeneratorExit | 调用生成器的close()方法时引发 |
ImportError | 找不到导入的模块时引发 |
IndexError | 当序列的索引超出范围时引发 |
KeyError | 在字典中找不到键时引发 |
KeyboardInterrupt | 当用户按下中断键(Ctrl+c或delete)时引发 |
MemoryError | 当操作耗尽内存时引发 |
NameError | 在局部或全局范围内找不到变量时引发 |
NotImplementedError | 由抽象方法提出 |
OSError | 当系统操作导致系统相关错误时引发 |
OverflowError | 当算术运算的结果太大而无法表示时引发 |
ReferenceError | 使用弱引用代理访问垃圾收集的引用时引发 |
RuntimeError | 当错误不属于任何其他类别时引发 |
StopIteration | 函数引发,以指示迭代器不再返回任何项 |
SyntaxError | 遇到语法错误时由解析器引发 |
IndentationError | 当缩进不正确时引发 |
TabError | 当缩进由不一致的制表符和空格组成时引发 |
SystemError | 当解释器检测到内部错误时引发 |
SystemExit | 由sys.exit()函数引发 |
TypeError | 将函数或操作应用于类型不正确的对象时引发 |
UnboundLocalError | 当在函数或方法中引用局部变量,但没有将值绑定到该变量时引发 |
UnicodeError | 当发生与unicode相关的编码或解码错误时引发 |
UnicodeEncodeError | 当编码过程中发生与unicode相关的错误时引发 |
UnicodeDecodeError | 当解码过程中出现与unicode相关的错误时引发 |
UnicodeTranslateError | 翻译过程中发生与unicode相关的错误时引发 |
ValueError | 当函数得到类型正确但值不正确的参数时引发 |
ZeroDivisionError | 当除法或模运算的第二个操作数为零时引发 |