【发布时间】:2015-05-15 09:40:04
【问题描述】:
我想捕获每个程序错误,以便在我的 GUI 程序中显示这些错误,但我发现我无法捕获某些类型的错误,例如 SyntaxError 和 IndentError。
例如:
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
所以,我知道我自己没有发现异常。
我怎样才能抓住它?
【问题讨论】:
-
感谢您的指导。那么在这种情况下,“捕获”它的唯一方法是让父进程从 python 程序中捕获 stderr。
标签: python python-2.7 exception-handling