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

发布于 2021-01-29 18:04:20

考虑

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...')

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

关注者
0
被浏览
48
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    在Python 3.3及更高版本中,raise ... from None可能会出现这种情况。

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

    这具有期望的结果。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看