import os, sys
from cStringIO import StringIO
import traceback
old_stdErr = sys.stderr
sys.stderr = mystdErr = StringIO()
try:
p = 100/0
except Exception:
traceback.print_exc(file=sys.stderr)
print mystdErr.getvalue() ### -- 1st Print statement
try:
q = 100/0
except Exception:
traceback.print_exc(file = sys.stderr)
print mystdErr.getvalue() ### -- 2nd Print statement
这段代码..输出将是什么
第一个打印语句的输出
回溯(最近一次调用最后):文件“C:\Users\manojtut\Desktop\untitled-1.py”,第 9 行,在 p = 100/0 ZeroDivisionError:整数除法或模除以零
第二个打印语句的输出
Traceback(最近一次调用最后一次):文件“C:\Users\manojtut\Desktop\untitled-1.py”,第 9 行,在 p = 100/0 ZeroDivisionError:整数除法或模除以零 Traceback(最近一次调用最后一次) :文件“C:\Users\manojtut\Desktop\untitled-1.py”,第 16 行,在 q = 100/0 ZeroDivisionError:整数除法或模除以零
如您所见,在第一个 zerodivision 遇到的异常正在我不想要的第二个 print 语句中再次打印。我可以以某种方式消除/清除第一个异常回溯,以便只能在第二个打印语句中打印第二个异常的回溯吗?