异常
我们在玩手机的时候,有时候软件莫名其妙就点不动了,或者强退了等等,这些都成为异常,我们通常来说是有bug了,所以在写程序的时候需要针对可能存在的异常进行捕获,这样有助于我们定位问题:啊~我们这里有bug,或者线上用户的异常比例明显比较高需要加以注意等等。
异常的捕获
基本语法
try:
可能发生异常的代码
except:
如果出现异常执行的代码
捕获指定异常
当然,代码中异常有很多种,一些异常是允许的或者无关紧要的,所以我们需要从一些异常中捕获我们需要的异常。
try:
可能发生异常的代码
except TypeError as a: #这里的a是一个定义的临时变量
出现指定异常时执行的代码
捕获多个异常
try:
可能发生异常的代码
except (TypeError, NameError)as a: #这里的a是一个定义的临时变量
出现指定异常时执行的代码
else,finally
try:
可能发生异常的代码
except TypeError as a:
出现指定异常时执行的代码
else:
如果没有异常时执行的代码(可选)
finally:
不管是否有异常都会执行的代码(可选)
常见的报错类型
1. SyntaxError
:语法错误。通常意味着代码中有些东西没有按照Python的语法规则来书写。例如,漏掉冒号、缩进错误、打错关键词等。
2. NameError
:名称错误。当尝试访问一个未定义的变量或者函数时,会抛出这个错误。通常是因为打错名称或者忘记定义。
3. TypeError
:类型错误。当对一个值进行了不允许的操作时,会出现这个错误。比如尝试将字符串和数字相加。
4. IndexError
:索引错误。当尝试访问列表、元组或字符串等序列类型的非法索引时,会抛出这个错误。通常是因为使用了负数索引或超出序列的实际范围。
5. KeyError
:键错误。当字典中查找不存在的键时,会出现这个错误。
6. AttributeError
:属性错误。当尝试访问对象的一个不存在的属性或者方法时,会抛出这个错误。
7. ValueError
:值错误。当传入一个函数或操作的参数是正确类型,但不包含合法的值时发生。例如,尝试将字符串转换为整数时,如果字符串不表示数字,则会出现此错误。
8. ZeroDivisionError
:零除错误。在除法或模运算中,如果除数是0,则会引发此错误。
9. ImportError
:导入错误。当尝试导入一个不存在的模块时,会抛出这个错误。
10. FileNotFoundError
:文件未找到错误。当尝试打开不存在的文件时,会遇到这个错误。
11. OSError
:操作系统错误。用于指示系统相关的异常,比如文件打开、操作失败等。
12. RuntimeError
:运行时错误。当发生一个通常无法预见的错误时,通常会抛出这个异常。
13. MemoryError
:内存错误。当程序运行时内存不足,无法完成操作时,会抛出这个错误。
14. RecursionError
:递归错误。当递归调用的深度超过了最大限制时(默认是1000),Python会抛出这个错误。