где остальные исключения из Ironpython? - PullRequest
3 голосов
/ 10 марта 2011

Я могу ошибаться, но, похоже, я получаю неполные трассировки стека и сообщения об исключениях, когда SystemError вызывается в IronPython.Я делаю это:

                try:
                    with SQLConnection(DATASOURCES[SCHEDULEDB]) as db:
                        db.execute_sql( command + ' ' + ','.join(block) + ';' )
                except Exception, e:
                    print 'caught an exception'
                    print "Unexpected error:", sys.exc_info()[0]
                    print e
                    raise
                finally:
                    db.close()
                    engine.close()

однако все, что я вижу, это:

Traceback (most recent call last):
SystemError: The connection has been disabled.

Ответы [ 2 ]

7 голосов
/ 11 марта 2011

Попробуйте:

import traceback
traceback.print_exc()

Вместо прямой печати объекта исключения.В Python объекты исключений не держатся за трассировку стека напрямую - вместо этого они являются частью трио элементов в sys.exc_info ().

Вы также можете сделать:

import System
...

except System.Exception, e:

и вы получите обычный объект исключения .NET вместо объекта исключения Python.

0 голосов
/ 27 сентября 2016

В процессе IronPython есть некоторые флаги, которые также устанавливают исключения .NET для вывода их трассировки стека:

ipy -X:ShowClrExceptions -X:ExceptionDetail my_script.py args
...