Python中如何输出完整的Exception Stack?

Patrick_DK 2006-11-23 09:34:36
大家都了解,在Java代码中的catch(Exception e){}块中,可以调用e.printStackTrace()输出完整的堆栈,另外通过调用Exception的相关方法也可以拿到堆栈的完整信息,包括出错行号等等

但是在python中该如何实现上述需要呢?我在python的except Exception, e:块中,调用print Exception, e得到的结果就只有一行信息,只是异常的名字和说明而已。

请问该如何在Python中输出异常的完整堆栈信息?
...全文
11803 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Patrick_DK 2006-12-09
  • 打赏
  • 举报
回复
我不明白同样一段代码,你们py2exe打包后就没有我这样的问题吗?
iambic 2006-12-09
  • 打赏
  • 举报
回复
没打包过……
michael_g_hu 2006-12-04
  • 打赏
  • 举报
回复
我没有出现楼主的问题,无法帮助
Patrick_DK 2006-12-01
  • 打赏
  • 举报
回复
所以我认为traceback.format_exc()这个方法可能是re-raise了exception
Patrick_DK 2006-12-01
  • 打赏
  • 举报
回复
整个py文件的代码就是下面这些:
import traceback

try:
1/0
except Exception, e:
exstr = traceback.format_exc()
print exstr
raw_input("hold on...")
打包成exe后,运行,直接crash;如果在IDE中运行,进程还是hold的
Patrick_DK 2006-12-01
  • 打赏
  • 举报
回复
我用的py2exe打包的,运行起来到那里,直接crash,整个command window自动关闭了
Patrick_DK 2006-11-30
  • 打赏
  • 举报
回复
我用logging包的exception()方法来输出异常堆栈,也是跟上面一样的情况

仔细测了一下,发现logging.exception()可以输出异常堆栈,但实际上在输出的同时又re-raise的了这个exception,所以导致了编译好的exe遇到这条语句直接crash了

不知道该如何解决这个问题
Patrick_DK 2006-11-30
  • 打赏
  • 举报
回复
谢谢楼上二位,但我还有个问题,下面是我的代码:
import traceback

try:
1/0
except Exception, e:
exstr = traceback.format_exc()
print exstr
raw_input("hold on...") #这句是为了不让进程终止

以上这段代码在IDE(eclipse)中运行OK,输出了exception stack,且程序没有crash;
但是我把它打包成exe再运行,命令行窗口在输出了exception stack后立刻退出了

请问这是为何?
michael_g_hu 2006-11-30
  • 打赏
  • 举报
回复
我用PY2exe,打成EXE,执行都OK,不知道你用什么打包的
ChumpKlutz 2006-11-23
  • 打赏
  • 举报
回复
traceback模块
iambic 2006-11-23
  • 打赏
  • 举报
回复
import traceback

try:
1/0
except Exception, e:
exstr = traceback.format_exc()
print exstr

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧