什么是异常?
异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。
一般情况下,在Python无法正常处理程序时就会发生一个异常。
异常是Python对象,表示一个错误。
当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
下表是python常见异常
异常 | 原因 |
NameError | 尝试访问一个没有申明的变量 |
ZeroDivisionError | 除数为0 |
SyntaxError | 语法错误 |
IndexError | 索引超出序列范围 |
FileNotFoundError | 文件未发现错误(比如你要读的文件不存在) |
IndentationError | 缩进 |
AttributeError | 尝试访问未知的对象属性 |
KeyError | 请求一个不存在的字典关键字 |
ModuleNotFoundError | 模块未发现 |
举例说明
#!/usr/bin/python3
#1.NameError
print(a)
'''报错如下:
Traceback (most recent call last):
File "./Error_throw.py", line 3, in <module>
print(a)
NameError: name 'a' is not defined'''
#2.ZeroDivisionError
a,b = 10,0
print(a/b)
'''报错如下:
Traceback (most recent call last):
File "./Error_throw.py", line 13, in <module>
print(a/b)
ZeroDivisionError: division by zero'''
#3.SyntaxError
print(1]
'''报错如下:
File "./Error_throw.py", line 21
print(1] ^
SyntaxError: invalid syntax
'''
#4.IndexError
list = [1,2,3,4]
print(list[4])
'''报错如下:
Traceback (most recent call last):
File "./Error_throw.py", line 29, in <module>
print(list[4])
IndexError: list index out of range'''
#5.FileNotFoundError
a=open("w.txt","r")
'''报错如下:
Traceback (most recent call last):
File "./Error_throw.py", line 36, in <module>
a=open("w.txt","r")
FileNotFoundError: [Errno 2] No such file or directory: 'w.txt'''
#6.IndentationError
if 1==1:
print(True)
print(1)
else:
print(False)
'''报错如下:
File "./Error_throw.py", line 45
print(1)
^
IndentationError: unexpected indent'''
#7.AttributeError
list = [1,2,3,4]
'''报错如下:
list.append(5) #It's ok
list.delete(5) #属性不存在,error
Traceback (most recent call last):
File "./Error_throw.py", line 56, in <module>
list.delete(5) #属性不存在,error
AttributeError: 'list' object has no attribute 'delete'
'''
#8.KeyError
dict = {"ONE":"this is 1", "TWO":"this is 2","THREE":"this is 3"}
print(dict["ONE"]) #It's ok
print(dict["FOUR"])
'''报错如下:
Traceback (most recent call last):
File "./Error_throw.py", line 66, in <module>
print(dict["FOUR"])
KeyError: 'FOUR'
'''
#9.ModuleNotFoundError
import test_error
'''报错如下:
Traceback (most recent call last):
File "./Error_throw.py", line 74, in <module>
import test_error
ModuleNotFoundError: No module named 'test_error'
'''
当我们在运行或者调试程序时遇到了异常,我们要学会阅读异常信息,找到出错的位置,发现异常,并更正它。
异常处理
接下来介绍异常处理,简单的讲,就是捕捉异常信号,做出相应的动作,类似linux当中的signal
当 Python 在执行代码时遇到一个它无法处理的错误或异常情况,它会中断当前的执行流程,并抛出一个异常。异常是程序运行时发生的问题,比如尝试访问不存在的变量、除数为零、文件找不到等。如果不对这些异常进行适当处理,程序就会崩溃并停止运行。
为了确保程序的稳定性和健壮性,我们需要对可能出现的异常情况进行捕获和处理。在 Python 中,可以使用 try...except
语句来捕获和处理异常。
块中包含了可能引发异常的代码
try
而 except
块则定义了当异常发生时应该执行的代码。
这样,当 try
块中的代码抛出异常时,程序不会立即崩溃,而是跳转到对应的 except
块执行异常处理代码,然后继续执行后续的代码。关于异常处理,看下一节内容详解。