Возвращение / выход на уровне класса в Python - PullRequest
0 голосов
/ 24 февраля 2010

В моем приложении у меня есть цикл, который в каждом ходу создает экземпляр класса, который выполняет некоторые операции. В этом классе у меня есть таймер сигнала, который при вызове должен корректно выйти из текущего поворота в цикле и позволить следующей операции продолжаться без прерывания.

В своем текущем состоянии он вызывает исключение, которое должно быть перехвачено блоком try-исключением. Однако у меня есть сигнал «loadFinished» (для которого я не знаю идентификатор), который вызывается после того, как генерируется исключение, и вызывает исключение времени выполнения для определения функции, которое я не могу поймать.

Есть ли способ сделать возврат уровня класса, как если бы кто-то завершил функцию, если что-то не так? Или, может быть, какой-то sys.exit (), который работает только в классе?

Надеюсь, я ясно дал понять. :) Спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 24 февраля 2010

Кристофер,

возможно, использование Timer и Event классов больше подходит для вас Вы можете проверить, чтобы событие было установлено внутри вашего цикла, а затем выйти из текущей итерации:

if my_event.isSet():
    continue

Я думаю, что вы пытаетесь сделать не очень хороший дизайн. Я не вижу способа «выбросить» исключение в другую функцию. Я предполагаю, что под сигналом вы подразумеваете асинхронный вызов функции. Это, конечно, может также установить событие, упомянутое выше.

1 голос
/ 24 февраля 2010

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

Вы не можете выбросить из них исключение и ожидать, что оно появится в вашем обычном коде. В самом деле, вы должны попытаться сделать как можно меньше в своем обработчике - установить глобальный флаг или, возможно, отправить сообщение по каналу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...