Поймать исключение в Python ... но все же продолжить - PullRequest
0 голосов
/ 15 мая 2019

tl; dr Я использую try: ... except Exception as err: pass, но код все равно останавливается, когда возникает исключение, даже если это не должно.

Я использую алгоритм преобразования в CSV. И одно из преобразований учитывает существование значений столбца в базе данных. Если его не существует, я выдаю исключение, подобное этому:

2019-05-15 16:36:37,095 - root - WARNING - The data in 'section_code' either doesn't exist in the raw data or hasn't been correctly encoded. The following strings caused the encoding error : '['398', 'die']'

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

Вот как мой код заключен в блок try...except

if __name__ == "__main__":
    try:
        # Initiate logger
        logging.basicConfig(
            level="DEBUG",
            format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

        # Business code ...

    except FileNotFoundError as f_err:
        logging.exception(f_err)
    except AzureMissingResourceHttpError as az_err:
        logging.exception(az_err)
    except TypeError as t_err:
        pass
        logging.warning(t_err)

Итак, мой вопрос: почему оператор pass не имеет требуемого эффекта и как мне реализовать это поведение?

1 Ответ

5 голосов
/ 15 мая 2019

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

Чтобы исправить, вы должны ограничить попытку / исключение только строкой кода, исключение которой следует игнорировать.

...