Pas*_*day 5 python debugging exception
因此,我正在开发具有索引器的此类。我想抛出(或用Python语言来“提高”)一个IndexError异常。好吧,这很琐碎,
if errorCondition:
raise IndexError("index out of range")
Run Code Online (Sandbox Code Playgroud)
但是,当此代码在控制台中运行并且发生错误时,堆栈跟踪还包括引发错误的行:
Traceback (most recent call last):
File "code.py", line 261, in <module>
print myCards[99]
File "Full/Path/To/The/module.py", line 37, in __getitem__
raise IndexError("item index out of range")
IndexError: item index out of range
Run Code Online (Sandbox Code Playgroud)
我觉得这很奇怪,我想向实现者隐藏类的内部工作原理,而不是提供有关从外部模块中提取文件,行和代码的信息。
有什么办法可以解决这个问题?引发错误的全部目的是提供足够的信息来描述函数调用出错的原因,而不是在外部代码内部引发错误的位置。
如果您将代码分发为 .pyc 字节码文件(通常在第一次导入模块时自动生成),或者设计生成的 .pyc 文件不具有 .py 源文件的正确路径(通过移动/删除源文件),堆栈跟踪将省略源代码行。
您可以使用compileallstdlib 模块控制如何生成字节码文件:http : //docs.python.org/2/library/compileall.html
正如评论者指出的那样,这是不寻常的——额外的信息可以节省调试生产问题的宝贵时间。
| 归档时间: |
|
| 查看次数: |
1261 次 |
| 最近记录: |