web-dev-qa-db-ja.com

python 3 try-except all with error

すべての可能な例外をキャッチせずにエラーを表示するtry-except catch allを実行することは可能ですか? 24時間年中無休で実行されるスクリプトで、数日ごとに1日1回例外が発生する場合があります。私はスクリプトを死なせることはできませんが、すべてを除いて試みる限り、それが再試行するので、それらは重要でもありません。したがって、最後のまれな例外を追跡する間、将来のデバッグのためにそれらをファイルに記録したいと思います。

例:

try:
    print(555)
except:
    print("type error: "+ str(the_error))

the_errorをスタックトレースなどに置き換える方法はありますか?

37
Ryan Mills

はい、できます すべてのエラーをキャッチ のように:

try:
    print(555)
except Exception as e:
    print("type error: " + str(e))

スタックトレースには、通常 traceback モジュールを使用します。

import traceback

try:
    print(555)
except Exception as e:
    print("type error: " + str(e))
    print(traceback.format_exc())
79
Cyzanfar

できるよ:

   try:
       print(555)
   except Exception as err:
      print("Erro {}".format(err))

またはraiseを使用します

Doc's は常にあなたの友達です

ヒント:「except:」の使用は避けてください

より説明的なものを使用してください

...
except (ValueErro, KeyError):

コードが十分にテストされていない限り、すべてのエラーを把握することはできません。

9
Joao Vitorino