2011-07-16 18 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,同時仍然傾銷完整的堆棧跟蹤。什麼是最好的方法來做到這一點?設置退出碼時,將引發異常

回答

35

看看traceback模塊。你可以做到以下幾點:

import sys, traceback 

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

這將寫回溯到標準錯誤,並退出與代碼3

+2

但是是不是有安裝這樣的處理程序,而無需打開一個'try'的方式/ '除了'條款?我寧願只調用一次,也許通過導入一個特定的模塊,然後每次引發'ExceptionWhichCausesExitCode3()'應該以退出代碼3退出程序。 – Alfe

+0

查看http://is.gd/EFOWlO我在這方面解決了這個問題。 – Alfe

+0

你是不是指'sys.exit()'? [exit](https://docs.python.org/2/library/constants.html#exit)是一個僅用於交互式解釋器的幫助函數。 – OozeMeister