2011-07-16 28 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 

Tôi muốn thay đổi mã thoát này từ 1 đến 3 trong khi vẫn bán phá giá theo dõi ngăn xếp đầy đủ. Cách tốt nhất để làm điều này là gì?Đặt mã thoát trong Python khi ngoại lệ được nâng lên

Trả lời

35

Hãy xem mô-đun traceback. Bạn có thể làm như sau:

import sys, traceback 

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

này sẽ viết traceback đến sai số chuẩn và thoát với mã 3.

+2

Nhưng không có cách nào để cài đặt một handler như vậy mà không cần phải mở một 'try'/mệnh đề 'except'? Tôi muốn chỉ cần gọi một cái gì đó một lần, có thể bằng cách nhập một mô-đun cụ thể, và sau đó mỗi nâng cao 'ExceptionWhichCausesExitCode3()' nên thoát khỏi chương trình với mã thoát 3. – Alfe

+0

Hãy xem http://is.gd/EFOWlO trong đó tôi giải quyết khía cạnh đó. – Alfe

+0

Ý của bạn là 'sys.exit()'? [exit] (https://docs.python.org/2/library/constants.html#exit) là một hàm trợ giúp chỉ dành cho trình thông dịch tương tác. – OozeMeister

Các vấn đề liên quan