Я родом из Java, где исключения и ошибки - это совершенно разные вещи, и оба они происходят от того, что называется Throwable
. В Java обычно вы никогда не должны пытаться обнаружить ошибку.
В Python хотя кажется, что различие размыто.
Пока что после прочтения некоторых документов и проверки иерархии У меня есть следующие вопросы:
Есть синтаксические ошибки, которые, конечно, приводят к тому, что ваша программа вообще не может запускаться. Правильно?
«Ошибки, обнаруженные во время выполнения, называются исключениями и не являются безусловно фатальными» (согласно руководства ). Что значит «фатальный» здесь? Кроме того, некоторые объекты, такие как AttributeError, (по вышеприведенному определению) на самом деле являются исключениями, даже если в их именах содержится ошибка, верно ли это заключение?
Некоторые классы являются производными от Exception, но содержат в своем имени Error. Разве это не смущает? Но даже в этом случае это означает, что Ошибка в имени ни в коем случае не является особенной, это все же Исключение. Или нет... ?
"Все встроенные, не выходящие из системы исключения получены из [Exception]" (цитата из здесь )
Так, какие из них системных выходов исключений, а какие нет? Это не сразу понятно. Все определяемые пользователем исключения также должны быть получены из исключения. Так что, как новичку, мне нужно беспокоиться о чем-то еще, кроме исключения? Похоже, нет.
Предупреждения также вытекают из исключения. Значит, предупреждения являются фатальными или системными или их нет?
К чему вписывается AssertionError? Это фатальный или системный выход?
Как узнать или указать, что некоторый класс Exception представляет собой фатальное или системное исключение?