【2018.11.12 11:34 更新,重新排版】
【欢迎关注微信公众号“陶晨毅”,代码之外的资料分享学习打卡站】
【先说明,本博客不解决任何具体问题,只是初学时为看懂报错信息写的笔记示例】
如果一个错误出现后没有被捕获(捕获是什么先不管,现在就理解为出现了一个错误),它就一直被往上抛,最终将被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
(2021.5.3补充)
定位完问题,如果是一般的语法错误或者代码逻辑错误,一般思考一下就能理解怎么修改了。如果是一些不熟悉的错误,复制错误类型进行百度搜索,看看其他人是怎么处理的即可。当然更建议Google+StackOverflow,中文内容太多不严谨的来回搬运了,既然学编程早日熟悉英文还是有必要的。
不过偶尔类似中文编码错误或者非代码问题等,好像还是百度更能找到解决方案一点,虽然百度整体内容很辣鸡,但是不得不承认百度经验某些内容真的手把手教我解决了很多百思不得其解的问题。
祝各位编程学习顺利,我不是计算机专业,马上就要毕业啦,未来不当程序员,日后估计不常写代码了。
感兴趣可以关注我的公众号和即刻。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207907.html原文链接:https://javaforall.net
