出错并不可怕,可怕的是不知道哪里出错了。解读错误信息是定位错误的关键。我们从上往下可以看到整个错误的调用函数链:
告诉我们这是错误的跟踪信息。
调用main()
出错了,在代码文件pytry.py
的第117行代码,但原因是第116行:
调用bar('0')
出错了,在代码文件pytry.py
的第116行代码,但原因是第114行:
原因是return foo(s) * 2
这个语句出错了,但这还不是最终原因,继续往下看:
原因是return 10 / int(s)
这个语句出错了,这是错误产生的源头,因为下面打印了:
根据错误类型ZeroDivisionError
,我们判断,int(s)
本身并没有出错,但是int(s)
返回0
,在计算10 / 0
时出错,至此,找到错误源头。
执行,可以最后跟踪到我们自己定义的错误: