2015-12-16 2 views
-1

Я отладочной комплексную программу, которая имеет блок так:Как определить происхождение исключения Python

try: 
    lots() 
    of() 
    deeply() 
    nested() 
    code() 
except BaseException as e: 
    log_error(str(e)) 

Сообщение об ошибке, выходит только Config file missing, но это не очень помогает мне.

Мне очень хотелось бы узнать, откуда именно это сообщение. (Обратите внимание, что строка ошибки из внешней программы, так что это не для поиска.)

Если я использую traceback я только получаю, чтобы увидеть трассировки стека после он был намотан назад к обработчику, который не является полезным , Я хотел бы увидеть трассировку в источнике исключения.

Любые идеи?
Спасибо!

+0

«Если я использую отслеживающий я получаю только увидеть трассировки стека после того, как она была намотана обратно к проводнику» - вы, вероятно, с помощью 'traceback' неправильный. Этот модуль делает именно то, что вы ищете. – user2357112

+0

Удалите попытку/исключение - тогда ошибка приведет к немедленной трассировке иерархии вызовов для консоли. Но да, я согласен с @ user2357112, что вы должны использовать трассировку неправильно. – barny

+0

Итак, в тестовом файле я вижу, что он делает именно то, что вы предлагаете. Это здорово. Мне просто нужно выяснить, почему он не работает в моей реальной программе. – Michael

ответ

1

Для целей отладки вы можете использовать модуль обратное прослеживание для печати трассировки стека

import traceback 

try: 
    lots() 
    of() 
    deeply() 
    nested() 
    code() 
except BaseException as e: 
    print traceback.format_exc() 
    log_error(str(e)) 
+0

Спасибо. Это действительно работает в моей тестовой программе, но не в реальной программе, которую я отлаживаю. – Michael

Смежные вопросы