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:整数除法或模数为零
第二个打印语句的输出
回溯(最近一次调用最后一次):文件“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遇到的异常将在我不想要的第二个打印语句中再次打印 . 我可以以某种方式消除/清除第一个异常回溯,以便只能在第二个打印语句中打印第二个异常的回溯吗?