Python - определите, было ли вызвано исключение в функции

В настоящее время я пишу расширение для другой библиотеки Python, которое я не могу контролировать. Библиотека имеет такие функции:

def xyz():
    try:
        sources = []
        ...
        #code that may add values to sources and may also throw an exception
        ...
        return sources
    except:
        return sources

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

Есть идеи? Опять же, у меня нет контроля над функцией, поэтому я не могу изменить возвращаемое значение или добавить try->, кроме как вне функции.

1 ответ

Вместо этого вы всегда можете попытаться установить функцию lib с помощью разумной реализации:

import insanelib

def myxyz():
    sources = []
    ...
    #code that may add values to sources and may also throw an exception
    ...
    return sources


insanelib.xyz = myxyz

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

Другие вопросы по тегам