当我在响应中引发自己的异常时,如何更容易地抑制以前的异常?

2024-10-01 11:27:55 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑

try:
   import someProprietaryModule
except ImportError:
   raise ImportError('It appears that <someProprietaryModule> is not installed...')

运行时,如果没有安装某个proprietaryModule,则会看到:

^{pr2}$

也许我不希望出现“在处理上述异常期间…”行(以及上面的行)。我可以这样做:

_moduleInstalled = True
try:
   import someProprietaryModule
except ImportError:
   _moduleInstalled = False
if not _moduleInstalled: 
   raise ImportError('It appears that <someProprietaryModule> is not installed...')

但这感觉有点像黑客。我还能做什么?在


Tags: installedimportthatisnotitraiseappears
2条回答

在Python 2.7和Python 3中可以这样做:

try:
    import someProprietaryModule
except ImportError as e:
    raised_error = e

if isinstance(raised_error, ImportError):
    raise ImportError('It appears that <someProprietaryModule> is not installed...')

在Python3.3及更高版本中,raise ... from None可能用于这种情况。在

try:
   import someProprietaryModule
except ImportError:
   raise ImportError('It appears that <someProprietaryModule> is not installed...') from None

这就达到了预期的效果。在

相关问题 更多 >