可能重复:
不要在异常堆栈中显示Python提升行
内置在诸如此类的异常中,NameError可以回溯我的代码中发生异常的点.我正在研究一个实用程序模块,它让我觉得如果使用我的模块的代码引发异常,那么异常之前的回溯中的最后一件事就是我的raise WhateverError.
有没有办法在python中引发异常并让tracback在内置异常中停止一帧(不编写c代码)?
因此,我正在开发具有索引器的此类。我想抛出(或用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)
我觉得这很奇怪,我想向实现者隐藏类的内部工作原理,而不是提供有关从外部模块中提取文件,行和代码的信息。
有什么办法可以解决这个问题?引发错误的全部目的是提供足够的信息来描述函数调用出错的原因,而不是在外部代码内部引发错误的位置。