Итак, я столкнулся с проблемой, когда механизм try: exception:, похоже, работает неправильно в python.
Вот содержимое моих двух файлов.
pytest1.py
import pytest2
class MyError( Exception ):
def __init__( self, value ):
self.value = value
def __str__( self ):
return repr( self.value )
def func1():
raise MyError( 'This is an error' )
def func3():
pytest2.func2()
if __name__ == '__main__':
try:
func3()
except MyError, e:
print 'I should catch here.'
except:
print 'Why caught here?'
pytest2.py
from pytest1 import func1
def func2():
func1()
Выполнение первого файла дает следующий вывод:
$ python pytest1.py
Why caught here?
В основном,исключение не ловится.Если я распечатываю тип исключения, он печатается как <pytest1.MyError>
вместо просто <MyError>
.Я предполагаю, что это какая-то странная циклическая справочная вещь, но кажется, что она должна работать.