Javaでは、例外のメッセージを取得することは、常に特定のメソッドを呼び出すことと同じくらい簡単です。 しかし、Pythonでは不可能と思われます。時にはこれを行うことによって動作します:私はいつもPythonで安全な方法で例外のメッセージを受け取るようにしますか?
しかし、そのような例外をキャプチャすると、メッセージ属性が存在しないために別の例外が発生することがあります。皮肉なことに悲しい。
print(e.msg)
しかし、時には、それはまた、不足している属性の例外が発生します:エラーを制御しようとすると、時にはそれがこれを行うことで動作し、別の1 ...
を生成します。
時には、これも同様に動作します:
print(str(e))
しかし、それは単に無駄ですので、時にはそれは、空の文字列を出力します。
私は、使用しているライブラリ、具体的なException実装に依存していると聞いています。それは私にとっては本当に馬鹿だ。どのような属性がエラーメッセージを取得するために持っているのかわからない場合に起こったことを印刷するためにエラーを処理する方法はありますか?
Iを使用することができます。
一般的に、あなたは明確なことやオーバーライドされない場合は、例外のタイプに関する情報を少なくとも含んでいることになっている
repr
を使用することができます1つの解決策がジェネリックスーパークラスではなく特定の例外をキャッチするとします。 –ジェームズが提案するように、それぞれの特定の例外タイプをキャッチし、それぞれを適切に処理します。 –
'traceback'モジュールを参照してください。あなたの目標が "私はまったく得られない"エラーを記録することであるなら、トレースバックは "操作が失敗しました"と言うランダムな文字列よりも100倍便利です(もしかすると空文字列モジュール作成者がメッセージを追加できませんでした)。受け取ることを期待しているエラーであれば、他の人が言ったように、基本クラスの「例外」ではなく、その特定の例外をキャッチする必要があります。 –