Почему проверочные исключения ненавидят, а значения ошибок хвалят? [закрыто]C++

Программы на C++. Форум разработчиков
Anonymous
 Почему проверочные исключения ненавидят, а значения ошибок хвалят? [закрыто]

Сообщение Anonymous »

Начнем с того, что я хотел бы отметить, что при обсуждении исключений и кодов ошибок часто смешиваются два разных аспекта. Синтаксис и исполнение.
Синтаксис — это то, что я ввожу в код и передаю компилятору.
Выполнение — это то, что происходит во время выполнения программы.
Для исключений у нас есть синтаксис try..catch throws и throw. Для значений ошибок у нас есть классический способ

Код: Выделить всё

if err != nil {
return err
}
или новые дополнения, такие как оператор ?, например, в Rust. Это всего лишь синтаксис.
Пока давайте не будем смешивать Python, JavaScript или C++, где вы можете просто генерировать любое исключение, какое захотите. Я говорю конкретно о проверенных исключениях.
На уровне выполнения у нас есть раскручивание стека в случае исключения с использованием libunwind в C++. Вызов всех различных посадочных площадок и выполнение кода очистки или вызов обработчика. В случае значений ошибок это в значительной степени wysiwyg, после вызова функции есть ветвь, проверяющая наличие ошибки.
Но это два ортогональных аспекта. Я могу представить язык программирования, который использует синтаксис исключений, но преобразует его в возвращаемое значение, подобное result. Я также могу представить себе компилятор, который обрабатывает result по-другому и реализует это с использованием протокола исключений Itanium и libunwind.
Теперь меня беспокоит только это с аспектом Синтаксис в этом посте.
С моей точки зрения, проверенные исключения и значения ошибок просто изоморфны.
Но почему-то, если вы Google, чтобы узнать, почему проверенные исключения не удалось, вы получите много результатов. Аргументы все также применяются к значениям ошибок.
Новые исключения распространяются вверх по стеку вызовов, как и новые значения ошибок. Чем throws Exception отличается от box?

Подробнее здесь: https://stackoverflow.com/questions/790 ... es-praised

Вернуться в «C++»