Python исключение в исключении - PullRequest
4 голосов
/ 07 декабря 2010

Как вы обрабатываете исключение, выбрасываемое предложением исключения в Python?

def safeLoopingCall(self, *args, **kwargs):
    try:
        self.loopingCall(*args, **kwargs)
    except:
        self.log.exception("exception in task")

Если в регистраторе происходит исключение, нас нетКаковы наилучшие методы, чтобы избежать этого?Окружаете ли вы другой блок-исключение (звучит ужасно)?Предполагается, что эта функция никогда не распространяет никаких исключений.

Ответы [ 2 ]

5 голосов
/ 07 декабря 2010

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

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

0 голосов
/ 05 сентября 2012

FWIW, вы можете взглянуть на мой CausedException class .Может быть, это может помочь вам в этом случае;вам придется перехватывать оба исключения, заключать их в CausedException и затем вызывать CausedException с этими двумя причинами.Таким образом, все задействованные трассировки стека будут доступны в отладочном сообщении.

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