実際のエラーに関するより良い情報をユーザーに提供するために、例外を再発生させようとしています。Python 3.3 にはPEP 409が含まれています。raise NewException from None
元の例外のコンテキストを抑制する構文を追加します。
ただし、Python 3.2 をターゲットにしています。Python スクリプトは解析しますが、実行時にfrom None
構文に遭遇すると生成さ れTypeError: exception causes must derive from BaseException
ます。例えば:
try:
regex_c = re.compile('^{}$'.format(regex))
except re.error as e:
e_msg = 'Regular expression error in "{}"'.format(regex)
e_reraise = Exception(e_msg)
# Makes use of the new Python 3.3 exception syntax [from None]
# to suppress the context of the original exception
# Causes an additional TypeError exception in Python 3.2
raise e_reraise from None
にカプセル化raise e_reraise from None
するとtry
、さらに大きな例外スタックトレースが生成されます。python3.3
私のXubuntu 12.10は/usr/lib/python3/dist-packages/*
、python3.2モジュール用にセットアップされたモジュールをプルするため、バージョンチェックも機能しません。(大規模なトレースバックError in sys.excepthook:
を作成する便利なものを取得します。)
Python 3.3 で実行しているときに PEP 409 機能を使用し、Python 3.2 では黙って無視する方法はありますか?