Прочитал, что в питоне ошибки делятся на собственно ошибки (в общепринятом понимании) и т.н. «исключения». В основном на русскоязычных ресурсах описывается определенная разница между этими понятиями. Вроде как просто ошибка от исключения отличается только одной вещью - ошибку нельзя обработать, а с исключением можно что-то сделать.
Т.е. допустим у меня были ошибки синтаксиса, когда неправильно скобки или пробелы расставлял. Или были ошибки имен, когда использовал переменную, которой ничего не присвоено. Или приводится еще такой пример, когда закончилась память, будет ошибка нехватки памяти и аварийное завершение программы. Считается, что это именно фатальные ошибки, и ничего с этим не поделать, поэтому нельзя называть их исключениями.
С другой стороны - исключения. Ситуации, которые можно обработать. Например, программа завершилась из-за того, что в какой-то части происходит деление на 0. Эту ситуацию можно предугадать и обработать ввод пользователя, так чтобы ему выдавалось предупреждение изнутри программы, а не ошибка интерпретатора, и сделать так чтобы программа не завершалась, поэтому это называется исключением.
Но что-то я никак не пойму, существует ли в оригинале эта разница или нет? Или это кривые переводы русских руководств? Если существует, хочу увидеть полный список «просто ошибок» и исключений в официальном гайде.
А пока что вижу кучу разных мнений. Например, здесь почему-то выделяют отдельно только синтаксические ошибки, а все что не является синтаксической ошибкой - это типа исключения.
https://www.tutorialsteacher.com/python/error-types-in-python
Причем пишут, что во многих случаях ошибка может вылезти уже после запуска программы, и тогда это считается исключением. Но опять же, почему? В любой момент может кончиться память, допустим. И тогда программа вылетит - тоже после запуска. Это что теперь - тоже исключение? Ты же не можешь с этим ничего сделать, если в системе кончилась память. Какая-то путаница…
Или другая ссылка, кажется более официальная - «встроенные исключения». И здесь как я понял вообще ВСЕ ОШИБКИ называются исключениями. Перед названием каждой ошибки стоит слово «exception», например, exception SyntaxError. Да тут кругом один сплошной exception.
https://docs.python.org/3/library/exceptions.html
Так кто прав? В питоне все ошибки это исключения, или не все? Где прочитать про разницу и увидеть полный список того и другого?