Сообщение об исключении (Python 2.6)

В 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' 

Я могу справиться с этим «try-except», например:

 try: pkl_file = open('monitor.dat', 'rb') monitoring_pickle = pickle.load(pkl_file) pkl_file.close() except Exception: print 'No such file or directory' 

Как я мог в catched Exception напечатать следующую строку?

 File "C:\Python_tests\Exception_Handling\src\exception_handling.py", line 11, in <module> pkl_file = open('monitor.dat', 'rb') 

Таким образом, программа не выйдет.

4 Solutions collect form web for “Сообщение об исключении (Python 2.6)”

Это выводит сообщение об ошибке:

 except Exception, e: print "Couldn't do it: %s" % e 

Это покажет всю трассировку:

 import traceback # ... except Exception, e: traceback.print_exc() 

Но вы можете не захотеть поймать Исключение. Чем уже вы можете сделать свой улов, тем лучше. Поэтому вы можете попробовать:

 except IOError, e: 

вместо. Кроме того, что касается сужения обработки исключений, если вы беспокоитесь только о недостающих файлах, тогда установите try-except только вокруг open:

 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() 

Если вы хотите захватить объект исключения, переданный в Exception, лучше начать использовать новый формат, представленный в 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 

Подробный обзор можно найти в документации What's New в Python 2.6 .

Python имеет модуль трассировки .

 import traceback try: pkl_file = open('monitor.dat', 'rb') monitoring_pickle = pickle.load(pkl_file) pkl_file.close() except IOError: traceback.print_exc() 

Спасибо за все.

Вот, что мне нужно 🙂

 import traceback try: # boom except Exception: print traceback.format_exc() 
Python - лучший язык программирования в мире.