为什么我要写这篇呢,之前有很多小伙伴在运行代码时遇到了各种各样的问题,甚至有这样的一句话,编程一小时,找错一整天,所以小卡今天就整理了一下日常常见的几种报错类型,come~
首先我们来说一下错误和异常,在程序中难免会出现各种错误,而错误分为两种,第一种是语法错误,这种错误你是无论如何都跑不出来的,看着终端红颜色的一片脑壳都有点痛,所以说这种错误执行程序前要修正;第二种呢就是逻辑错误,比如说用户输入的不合适等一系列错误。
什么是异常呢,异常就是程序运行时,某一句引发错误导致之后的代码都无法运行,是不是有点丛林大盗的感觉,此山是我开,此树是我栽,哎呀呀~
在Python无法正常处理程序时就会发生一个异常。这里的异常Python对象,表示这段代码是这个问题。 常见的异常类型:
SyntaxError: unexpected EOF while parsing
语句错误,多了无法解析的符号,检查一下是否多了或者少了括号
SyntaxError: invalid character in identifier
语法错误有无效标识符,检查一下中文符号
IndexError: list index out of range
索引错误,超出索引范围,检查一下列表 是否为空
TypeError: must be str, not int
数据类型错误,该数据不是正确的数据类型,比如字符串和数字直接拼接,检查一下数据类型
IndentationError:expected an indented block
缩进错误,检查一下代码的缩进是否正确
KeyError: 'fond'
键错误,字典中没有该key对应的值,检查一下键名或者字典数据是否正确
ValueError:substring not found
值错误,输入的数据类型跟要求的不符合
NameError:name 'a' is not defined
未初始化对象,变量没有被定义
AttributeError:'tuple' object has no attribute 'remove'
属性错误,该对象没有这个属性、方法,请检查一下数据类型,例如元组没有append属性
SystemExit
解释器请求退出,出现在exit()函数后
IOError
输入/输出操作失败
ImportEroor
导入模块/对象失败,检查一下模块是否能够正常使用
UnicodeDecodeError/UnicodeEncodeError/UnicodeTranslateError
Unicode 解码/编码/转码时的错误
TabError
Tab和空格混用以上就是比较常见的几种异常类型,有异常同样也会有处理的方法,那么我们首先来说什么是异常处理。
Python在执行程序时,检测到错误,触发异常,在异常触发后且没有处理的情况下,程序会立即在当前异常处停止,后面的代码就不会运行,那么我们的程序就会直接崩溃,弱不禁风,所以你必须提供一种异常处理机制来增强你程序的健壮性与容错性。
友情提示:每一个try,都必须至少对应一个except。 异常是程序错误引起的,和语法错误没有关系哦,语法错误一定要及时修正!!! 此外,与python异常相关的关键字主要有:
关键字 | 关键字说明 |
|---|---|
try/except | 捕获异常并处理 |
pass | 忽略异常 |
else | 如果try的语句没有引发异常,则执行else的语句 |
as | 定义异常实例 |
finally | 无论是否出现异常,都会执行其语句 |
raise | 抛出/引发异常 |
异常处理的语句
看一下如何使用:
try...except
try:
print(name)
except NameError:
print('如果在try部分引发了名为'name'的异常,则执行这段代码')try...except...as...
try:
print(name)
except NameError as e:
print(e)try...except...else
try:
# name = 'lucy'
print(name)
except NameError as e:
print(e)
else:
print('如果没有异常发生,则执行这段代码')try...except...finally
try:
name = 'lucy'
print(name)
except NameError as e:
print(e)
finally:
print('finally 块无论是否发生异常都会被执行;通常用来释放 try 块中申请的资源')raise异常 如果你捕获了一个异常,却不想彻底解决这个异常,而是将该异常向上层抛出,可以使用raise关键字 raise用于抛出异常,其后可以跟一个异常对象,或者什么也不跟,如下:
raise 加一个异常对象:
raise Exception('这里有错误')raise 什么也不加:
try:
hey('123', 'abc')
except Exception as e:
print('发生异常')
raise以上方法应该尽量少用,因为它本身是你附加给程序的异常处理逻辑,有大量的这种处理时,你的代码可读性会很差,只有在异常无法预知的情况下在使用,其他的异常还是应该尽快修正。
说到这里,你们是否对异常和错误有了点头绪呢。