如果一个错误出现后没有被捕获(捕获是什么先不管,现在就理解为出现了一个错误),它就一直被往上抛,最终将被Python解释器捕获。然后就在本该输出结果的地方打印一大串错误信息,然后程序退出。

示例代码如下:

定义一个名为f1的函数

接收一个s,将s转化为整数类型后,函数返回1除以s的值

def f1(s):
return 1 / int(s)

定义一个名为f2的函数

调用函数f1(),返回f1()返回值+1

def f2(s):
return f1(s)+1

定义一个名为f3的函数

调用函数f2(),返回f2()返回值+1

def f3(s):
return f2(s)+1

调用f3函数

f3(‘0’)
示例代码执行后结果如下:

D:\Anaconda3\python.exe D:/生活学习日常记录/PycharmProjects/test/main.py
Traceback (most recent call last):
File “D:/生活学习日常记录/PycharmProjects/test/main.py”, line 20, in
f3(‘0’)
File “D:/生活学习日常记录/PycharmProjects/test/main.py”, line 16, in f3
return f2(s)+1
File “D:/生活学习日常记录/PycharmProjects/test/main.py”, line 10, in f2
return f1(s)+1
File “D:/生活学习日常记录/PycharmProjects/test/main.py”, line 4, in f1
return 1 / int(s)
ZeroDivisionError: division by zero

Process finished with exit code 1
解读错误信息就可以定位错误:

解释器在"D:\Anaconda3\python.exe" 执行的程序在"XXX.py"

D:\Anaconda3\python.exe D:/生活学习日常记录/PycharmProjects/test/main.py

错误的跟踪信息

Traceback (most recent call last):

错误出现在文件"XXX.py",第20行代码,错误来源于此执行模块:

File “D:/生活学习日常记录/PycharmProjects/test/main.py”, line 20, in
f3(‘0’) # 出错语句为f3(‘0’)

f3(‘0’)是导致报错的“直接原因”语句

错误出现在文件"XXX.py",第16行代码,错误来源于函数f3():

File “D:/生活学习日常记录/PycharmProjects/test/main.py”, line 16, in f3
return f2(s)+1 # 出错语句为return f2(s)+1

错误出现在文件"XXX.py",第10行代码,错误来源于函数f2():

File “D:/生活学习日常记录/PycharmProjects/test/main.py”, line 10, in f2
return f1(s)+1 # 出错语句为return f1(s)+1

错误出现在文件"XXX.py",第4行代码,错误来源于函数f1():

File “D:/生活学习日常记录/PycharmProjects/test/main.py”, line 4, in f1
return 1 / int(s) # 出错语句为return 1 / int(s)

return 1 / int(s)是导致报错的“根本原因”语句

错误类型是:除以零

ZeroDivisionError: division by zero

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐