异常消息(Python 2.6)

异常消息(Python 2.6),python,exception-handling,message,Python,Exception Handling,Message,在Python中,如果我打开一个不存在的二进制文件,程序将退出并显示一个错误: Traceback (most recent call last): File "C:\Python_tests\Exception_Handling\src\exception_handling.py", line 4, in <module> pkl_file = open('monitor.dat', 'rb') IOError: [Errno 2] No such file or

在Python中,如果我打开一个不存在的二进制文件,程序将退出并显示一个错误:

Traceback (most recent call last):
  File "C:\Python_tests\Exception_Handling\src\exception_handling.py", 
  line 4, in <module>
  pkl_file = open('monitor.dat', 'rb')
  IOError: [Errno 2] No such file or directory: 'monitor.dat'
我怎样才能在异常情况下打印以下行

File "C:\Python_tests\Exception_Handling\src\exception_handling.py", 
line 11, in <module>
pkl_file = open('monitor.dat', 'rb')
文件“C:\Python\u tests\Exception\u Handling\src\Exception\u Handling.py”,
第11行,在
pkl_文件=打开('monitor.dat','rb')

因此程序不会退出。

这将打印异常消息:

except Exception, e:
    print "Couldn't do it: %s" % e
这将显示整个回溯:

import traceback

# ...

except Exception, e:
    traceback.print_exc()
但您可能不想捕获异常。一般来说,你能钓到的鱼越窄越好。因此,您可能想尝试:

except IOError, e:
相反。此外,关于缩小异常处理范围的问题,如果您只关心丢失的文件,那么请将try except放在打开的位置:

try:
    pkl_file = open('monitor.dat', 'rb')
except IOError, e:
    print 'No such file or directory: %s' % e

monitoring_pickle = pickle.load(pkl_file)
pkl_file.close()
Python有这个模块

谢谢大家

这就是我需要的:)


如果您想捕获异常传递的异常对象,最好开始使用Python 2.6中引入的新格式(目前支持这两种格式),因为这将是在Python 3中实现此功能的唯一方法

也就是说:

try:
    ...
except IOError as e:
    ...
例如:

try:
    pkfile = open('monitor.dat', 'rb')
except IOError as e:
    print 'Exception error is: %s' % e

详细概述可在上找到。

您在发表评论时不应创建答案。接受其中一个答案以奖励您的帮助者!请花点时间再看一看Ned B的答案。除了解决你眼前的问题之外,他还提出了几点重要的观点。谢谢你,保罗,但我感觉我们在这个问题上的活动已经结束了……很有帮助,但这并没有回答问题。也许作为一个评论更好?@Josh回答说和这个差不多。
import traceback

try:
    # boom
except Exception:
    print traceback.format_exc()
try:
    ...
except IOError as e:
    ...
try:
    pkfile = open('monitor.dat', 'rb')
except IOError as e:
    print 'Exception error is: %s' % e