2011-07-16 20 views
20
$ cat e.py 
raise Exception 
$ python e.py 
Traceback (most recent call last): 
    File "e.py", line 1, in <module> 
    raise Exception 
Exception 
$ echo $? 
1 

完全なスタックトレースをダンプしながらこの終了コードを1から3に変更したいと思います。これを行う最善の方法は何ですか?例外が発生したときにPythonの終了コードを設定する

答えて

35

tracebackモジュールを見てください。あなたは次のことを行うことができます:/

import sys, traceback 

try: 
    raise Exception() 
except: 
    traceback.print_exc() 
    sys.exit(3) 

これは、コード3

+2

と標準エラー出力して終了するトレースバックを書きますが、そこ 'try'を開くことなく、このようなハンドラをインストールするための方法ではありません'except'節?私は何かを一度だけ呼び出すことを好みます。特定のモジュールをインポートしてから、ExceptionWhichCausesExitCode3()を呼び出すと終了コード3でプログラムを終了する必要があります。 – Alfe

+0

http://is.gd/EFOWl0私はその面に取り組んでいます。 – Alfe

+0

'sys.exit()'を意味しましたか? [exit](https://docs.python.org/2/library/constants.html#exit)は、インタラクティブなインタプリタ専用のヘルパ関数です。 – OozeMeister

関連する問題