目录
1.except: 只要try中出现异常,就会执行except中的代码。
3.except Type as data: 获取异常信息存入data
5.except Type1: except Type2: 分类处理异常,类似c语言中的switch-case,捕捉到不同异常进行不同的操作。
这篇文章将常见的
Python
错误类型与处理方法进行总结,可供有需要的小伙伴学习交流使用。
常见异常类型
AttributeError
AttributeError:属性错误,特性引用和赋值失败时会引发属性错误
出现这个异常,一种情况是调用了错误的方法,根据异常提示也可以看出,
a
是一个整型变量,但
append
是列表类型的一个方法,所以对一个整型变量使用列表的方法自然会出现问题。
解决方式就是检查报错处的内容,根据报错信息看看有没有出现调用方法的问题。
NameError
NameError
:试图访问的变量名不存在
![](https://img-blog.csdnimg.cn/38d6807fc55c495fa36c00d1b48552e9.png)
当我尝试访问一个没有定义过的变量的时候,程序就会抛出这个异常。
解决方法也很简单,就是在使用之前现给它初始化一下。
SyntaxError
SyntaxError:语法错误,代码形式错误
进行条件判断的时候使用'='而不是'=='会导致语法错误。
当使用if、while、for、class、def但末尾没有加冒号,或使用中文符号时,也会抛出该异常。
字符串少一般引号,函数调用少一半括号等等,均会抛出异常。
这种异常通常会明确指出异常位置,找到相应错误进行修改就可以了。
KeyError
KeyError:使用了映射中不存在的关键字(键)时引发的关键字错误
由于字典a中并没有'key'这个键,所以尝试调用时会抛出KeyError
解决方法是在调用之前先将这个键加入到字典中,如果之前已经加入,检查一下是否在之后将它删
除了。
IndexError
IndexError
:索引错误,使用的索引不存在,常索引超出序列范围,什么是索引
![](https://img-blog.csdnimg.cn/a158c91e03254bddad3a0fc67e2cba09.png)
这种错误通常表现为数组、字符串、元组等类型的越界访问。
在上面这个情况下,看上去没问题但会抛出越界异常,是因为在循环中我们将想要遍历的数组修改了,增加元素还好,一旦删除了元素,会导致数组长度变短,如果循环次数还是原来的数组长度的话,必然会导致数组越界。这个问题一般很难发现,所以当出现越界但又不知道到底是哪里出现问题的话,可以往这个方向思考一下。
IndentationError
IndentationError
:缩进错误,错误的使用缩进量。
![](https://img-blog.csdnimg.cn/1c8324bb66b849cd8d0e0dfd17b45ad3.png)
由于
Python
是对缩进敏感的,同一逻辑层应该保持相同的缩进,
":"
标记一个新的逻辑层,
增加
缩进
进入下一个代码层,
减少缩进
返回上一个代码层。如果错误使用就会抛出这个异常。
解决方法就是就错误位置增加或减少相应的缩进。
更多有关缩进的信息可以浏览这篇文章
TypeError
TypeError
:类型错误,内建操作或是函数应于在了错误类型的对象时会引发类型错误
![](https://img-blog.csdnimg.cn/2c83a51ef3294dd4bdd5eb8452096da2.png)
通常情况下,尝试对字符串进行修改将会抛出类型错误异常。众所周知,字符串是不可修改的数据
类型。
一般可以通过字符串拼接的方法进行解决
![](https://img-blog.csdnimg.cn/f495ec2fe5254e60b176b0b9c3092d32.png)
ZeroDivisonError
ZeroDivisonError:除数为0,在用除法操作时,第二个参数为0时引发了该错误
这个就不用多说了吧...
ValueError
ValueError
:值错误,传给对象的参数类型不正确,像是给
int()
函数传入了字符串数据类型的参
数。
![](https://img-blog.csdnimg.cn/7b3253bd8f8c42c2a6711cf4a5f958f0.png)
当给函数传入不正确的参数时,会抛出值错误异常。检查参数类型和数量,重新传入正确的即可。
不常见异常类型
不常见的异常类型太多了,通常情况下也很难遇到,我就不介绍了,欢迎有兴趣的小伙伴进行补
充。
简单异常处理
try-except
try
是
Python
中的一个保留字,具体作用是尝试执行
try
中的代码内容,如果
try
后的语句发生了异
常,则跳出该段语句,执行
except
中的内容。
except
可以捕捉到异常类型,具体用法可分为以下几类:
1.except: 只要try中出现异常,就会执行except中的代码。
![](https://img-blog.csdnimg.cn/9ead610ceef14719bc0494fb25ad6139.png)
因此,只要你的代码使用了以下内容,就永远不会报错(开玩笑呢你可别当真,不报错不代表
没有错误
![](https://img-blog.csdnimg.cn/d14bf227b7ac46ff98398d5cc8392dbd.png)
2. except Type: 只有出现
3.except Type as data: 获取异常信息存入data
4.except (Type1,Type2,Type3):
同时处理多种异常,捕捉到元组中任何一种异常,都会执行except中的操作。
5.except Type1: except Type2: 分类处理异常,类似c语言中的switch-case,捕捉到不同异常进行不同的操作。
try
和
except
应该成对出现,只有
try
而没有
except
会抛出语法错误。
千万要注意,通常情况下,
try
可以利用异常,但无法解决异常。虽然使用
try
之后不会再出现异
常,但只是
Python
将这个异常
‘
藏
’
了起来,并没有使之解决,所以平时不建议遇到异常就使用
try
。