Pythonのランタイムエラー、ファイルをダンプすることができますか?

StackOverflow https://stackoverflow.com/questions/550804

  •  23-08-2019
  •  | 
  •  

質問

私はその後、私はデータのためにそれをスキャンし、リンクのいずれかで何かをやっている、WebページをDLするlibcurlのを使用しています。しかし、たまにページが、私はこれを除いて、私は悪いデータを抽出し、pycurlが例外をスロー異なっています。私はpycurlの例外名を見つけてみましたが、運がなかった。

私は、ファイルの入力を見て、見る私のコードが間違っていたことができるようにしたので、私は、ファイルをダンプできる機能を実行するためのトレースバックを得ることができる方法はありますか?

役に立ちましたか?

解決

sys.excepthook の場所することができます、ここであなたを助けるかもしれませんグローバル例外ハンドラを設定します。私はそれが結合ライブラリーであること、pycurl例外がどのように扱われるかわからないが、それはおそらく、一般的な機能にそれを再割り当てしていきます。ような何かます:

>>> import sys
>>> 
>>> def my_global_exception_handler(type, value, traceback):
...     print traceback
...     sys.exit()
... 
>>> sys.excepthook = my_global_exception_handler
>>> raise
<traceback object at 0xb7cfcaa4>

この例外フック関数は、簡単に投棄必要なファイルへのアクセス権を持つインスタンスメソッド可能性があります。

他のヒント

あなたは、一般的な例外ハンドラを使用することができます。

logging.basicConfig( file="someFile.log", level=logging.DEBUG )
logger= logging.getLogger( __name__ )
try:
    curl = pycurl.Curl()
    curl.setopt(pycurl.URL, url)
    # etc.
    curl.perform()
    curl.close
    logger.info( "Read %s", url )
except Exception, e:
    logger.exception( e )
    print e, repr(e), e.message, e.args
    raise
logging.shutdown()

これはあなたが探している例外情報を持っている素敵なログを書き込みます。

あなたは、メインブロックのどこかにすべての例外をキャッチし、sys.exc_info()を使用したコールバックについては、あなたのファイルにそれを記録することができます。 exc_infoは()だけでなく、例外の型を返しますが、間違ってそこに行った情報べきようにもトレースバックを呼び出します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top