@YuriyCherniy

Почему здесь используется базовое исключение Exception?

Приветствую. Почему в этом фрагменте кода используется базовое исключение? Это же вроде как антипаттерн. Будут перехватываться почти все исключения.
try:
            # load() could spot a truncated JPEG, but it loads the entire
            # image in memory, which is a DoS vector. See #3848 and #18520.
            image = Image.open(file)
            # verify() must be called immediately after the constructor.
            image.verify()

            # Annotating so subclasses can reuse it for their own validation
            f.image = image
            # Pillow doesn't detect the MIME type of all formats. In those
            # cases, content_type will be None.
            f.content_type = Image.MIME.get(image.format)
        except Exception as exc:
            # Pillow doesn't recognize it as an image.
            raise ValidationError(
                self.error_messages['invalid_image'],
                code='invalid_image',
            ) from exc
        if hasattr(f, 'seek') and callable(f.seek):
            f.seek(0)
        return f

Это фрагмент исходников из Django, вот ссылка на код django/django/forms/fields.py/
Почему авторы используют такой подход? Может я, что-то неправильно понимаю?
  • Вопрос задан
  • 73 просмотра
Решения вопроса 2
Assargin
@Assargin
Перед ответом смотрю наличие ✔ в ваших вопросах
Это не безусловный антипаттерн. Если вы в блоке except логируете или перевыбрасываете исключение (как в вашем примере) - то норм, даже линтер не ругнëтся.
Ответ написан
@bacon
антипаттерн сделать общий except и умолчать, а тут они всё в ValidationError превратили, который будет обработан в формах
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы