応答として独自の例外を発生させるときに、以前の例外をより簡単に抑制するにはどうすればよいですか? 質問する

応答として独自の例外を発生させるときに、以前の例外をより簡単に抑制するにはどうすればよいですか? 質問する

考慮する

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

しかし、それはちょっとハックのように感じます。他に何ができるでしょうか?

ベストアンサー1

Python 3.3 以降ではraise ... from Noneこの状況で使用できます。

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

望ましい結果が得られました。

おすすめ記事