当我提出自己的异常作为响应时,如何更轻松地抑制以前的异常?

考虑


try:

   import someProprietaryModule

except ImportError:

   raise ImportError('It appears that <someProprietaryModule> is not installed...')

运行时,如果未安装someProprietaryModule,则会看到:


(traceback data)

ImportError: unknown module: someProprietaryModule


During handling of the above exception, another exception occurred:


(traceback data)

ImportError: It appears that <someProprietaryModule> is not installed...

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


_moduleInstalled = True

try:

   import someProprietaryModule

except ImportError:

   _moduleInstalled = False

if not _moduleInstalled: 

   raise ImportError('It appears that <someProprietaryModule> is not installed...')

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


Cats萌萌
浏览 154回答 2
2回答

守着星空守着你

在raise ... from None这种情况下,可能会使用Python 3.3及更高版本。try:&nbsp; &nbsp;import someProprietaryModuleexcept ImportError:&nbsp; &nbsp;raise ImportError('It appears that <someProprietaryModule> is not installed...') from None这具有期望的结果。

小怪兽爱吃肉

这可以在Python 2.7和Python 3中完成:try:&nbsp; &nbsp; import someProprietaryModuleexcept ImportError as e:&nbsp; &nbsp; raised_error = eif isinstance(raised_error, ImportError):&nbsp; &nbsp; raise ImportError('It appears that <someProprietaryModule> is not installed...')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python