Ответ 1
с помощью SyntaxError
может быть запутанным. Либо я создам специальный тип исключения, например eg. ParseError
или игнорировать данное значение и просто войти в систему как предупреждение
Я пишу парсер на основе Python, который может понять некоторые файлы конфигурации, которые мы используем. Файлы в основном состоят из пар (имя, тип) и (имя, значение):
Файл параметров:
# defines a field called some_bool of type boolean
some_bool : bool
Файл конфигурации:
# assigns True to some_bool
some_bool = bool
Я не уверен, что делать, когда я сталкиваюсь с синтаксической ошибкой внутри файла, который я обрабатываю:
# bol instead of bool
some_bool : bol
Неужели это плохая форма для повышения исключения SyntaxError в этом случае или исключения SyntaxError лучше оставить, чтобы показать проблемы в коде Python?
с помощью SyntaxError
может быть запутанным. Либо я создам специальный тип исключения, например eg. ParseError
или игнорировать данное значение и просто войти в систему как предупреждение
СинтаксисError может быть запутанным, но мне требуется дополнительная аргументация, прежде чем я убежден, что это хорошая причина не использовать его в этих случаях. ИМО в равной степени или более запутанно использовать другой вид исключения.
Даже если это может сбивать с толку при разборе кода (например, в домене), мы можем - в сообщении об ошибке - сделать однозначным, что это язык, специфичный для домена, который имеет ошибку, а не источник Python.
Кроме того, SyntaxError предлагает готовые поля для номера строки и имени файла. Роллинг собственного SyntaxError потребует повторного использования этих колес.
В принятом ответе здесь говорится
Используйте наиболее специфичный конструктор исключений, который семантически подходит для вашей проблемы.
... и ошибка, возникающая при синтаксическом анализе, является (семантически) синтаксической ошибкой.
У меня возникает ощущение, что однозначно сконструированный SyntaxError - это правильная вещь в таких случаях. Это также принятый ответ здесь.
Может ли кто-нибудь убедить меня в противном случае?