LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

Вместо того, чтобы разобраться объявлять все непонятное религией это так логично.

Было не так. Я разобрался, увидел, что рекомендации ведут к неэффективности, и уже только после этого объявил их сектой. Не путаем религию и секту. По модулю идеологической борьбы, если взять в чистом виде, то секта разрушает (например, она может выступать против семьи и за аборты, что ведёт к гибели народа), а религия может быть и на пользу (допустим, она за семьи и за завоевательные войны, что ведёт к экспансии народа).

Но паники должны на верхнем уровне ловится и превращаться в ошибку

Разве я это отрицал? Это очевидно, вроде. Если применять их шире, то это правило обобщается до «панику нужно ловить на соответствующем уровне и либо устранять её последствия, либо превращать в ошибку».

Еще у многих есть привычка просто выбрасывать ошибку наверх вместо обработки

Так это ортогонально к способу обработки:

func callDangerous() (err error) {
 err = dangerous()
 return }
Это ровно то же самое, как в языке с исключениями написать
func callDangerous() throws {
 dangerous()
}
«Errors are values» - здесь нет особой инновации. В любом ЯП со сборкой мусора логично сделать исключение объектом. То, что этот объект бросают, не должно создавать принципиальной разницы. Во всяком случае, в лиспе throw работает именно так - оно передаёт обычный объект вглубь стека. Про С++ не особо помню, там может быть нюанс со временем жизни исключения, но в целом, объект исключения - это тоже value, и в C++, и в Java. Объявлять отсутствующую инновацию присутствующей - это грубая ложь.

Исходная версия den73, :

Вместо того, чтобы разобраться объявлять все непонятное религией это так логично.

Было не так. Я разобрался, увидел, что рекомендации ведут к неэффективности, и уже только после этого объявил их сектой. Не путаем религию и секту. По модулю идеологической борьбы, если взять в чистом виде, то секта разрушает (например, она может выступать против семьи и за аборты, что ведёт к гибели народа), а религия может быть и на пользу (допустим, она за семьи и за завоевательные войны, что ведёт к экспансии народа).

Но паники должны на верхнем уровне ловится и превращаться в ошибку

Разве я это отрицал? Это очевидно, вроде. Если применять их шире, то это правило обобщается до «панику нужно ловить на соответствующем уровне и либо устранять её последствия, либо превращать в ошибку».

Еще у многих есть привычка просто выбрасывать ошибку наверх вместо обработки

Так это ортогонально к способу обработки:

func callDangerous() (err error) {
 err = dangerous()
 return }
Это ровно то же самое, как в языке с исключениями написать
func callDangerous() throws {
 dangerous()
}
«Errors are values» - здесь нет особой инновации. В любом ЯП со сборкой мусора логично сделать исключение объектом. То, что этот объект бросают, не должно создавать принципиальной разницы. Во всяком случае, в лиспе throw работает именно так - оно передаёт обычный объект вглубь стека.