3
我想捕獲每個程序錯誤,以便我可以在GUI程序中顯示這些錯誤,但是我發現我無法捕獲某些類型的錯誤,如SyntaxError和IndentError。爲什麼SyntaxError不能被用戶代碼捕獲?
例如:
import traceback
zero = 0
try:
print "start..."
v = 3/zero # deliberately no indention, SyntaxError cannot be caught
except:
print "Oooooooooooooops"
traceback.print_exc()
exit(1)
print "run ok"
控制檯輸出爲:
File "D:\w\personal\chj\python-try\catch-syntaxerror\catch_syntax_err.py", line 8
v = 3/zero # ``SyntaxError: invalid syntax``, cannot be catched by user
^
SyntaxError: invalid syntax
所以,我知道我沒趕上例外嘍。
我怎樣才能抓住它?
另一個很好的答案在http://stackoverflow.com/questions/1856408/syntaxerror-inconsistency-in-python –
感謝您的指示。然後在這種情況下,「捕捉」它的唯一方法是讓父進程從python程序中捕獲stderr。 –