История изменений
Исправление vlad9486, (текущая версия) :
Ещё пример. Если входные данные явно нарушают контракт. Выход за пределы массива, например, или еще что-то. Да, можно возвращать ошибку. Но вы представляете себе этот код? Код выше по стеку такой: передам-ка я фигню в эту функцию, а потом
if r.is_err() {
/* ну ладно, раскусили, делаю нормально */
}
Вот реальный пример, опять криптография. Пакет для роутинга в onion. Есть константа - максимальное количество хопов, есть метод, принимающий итератор по данных для каждого хопа и возвращающий пакет. Что делать если в итераторе элементов больше чем максимум? Кто-то скажет возвращать ошибку. Только вот это не рантайм ситуация. Количество ограничено во время компиляции. Если вызывающий код не может сразу передать правильное количество, то он и не сможет обработать ошибку.
Исправление vlad9486, :
Ещё пример. Если входные данные явно нарушают контракт. Выход за пределы массива, например, или еще что-то. Да, можно возвращать ошибку. Но вы представляете себе этот код? Код выше по стеку такой: передам-ка я фигню в эту функцию, а потом
if r.is_err() {
/* ну ладно, раскусили, делаю нормально */
}
Вот реальный пример, опять криптография. Пакет для роутинга в onion. Если константа - максимальное количество хопов, есть метод, принимающий итератор по данных для каждого хопа и возвращающий пакет. Что делать если в итераторе больше чем максимум? Кто-то скажет возвращать ошибку. Только вот это не рантайм ситуация. Количество ограничено во время компиляции. Если вызывающий код не может сразу передать правильное количество, то он и не сможет обработать ошибку.
Исходная версия vlad9486, :
Ещё пример. Если входные данные явно нарушают контракт. Выход за пределы массива. Да, можно возвращать ошибку. Но вы представляете себе этот код? Код выше по стеку такой: передам-ка я фигню в эту функцию, а потом
if r.is_err() {
/* ну ладно, раскусили, делаю нормально */
}
Вот реальный пример, опять криптография. Пакет для роутинга в onion. Если константа - максимальное количество хопов, есть метод, принимающий итератор по данных для каждого хопа и возвращающий пакет. Что делать если в итераторе больше чем максимум? Кто-то скажет возвращать ошибку. Только вот это не рантайм ситуация. Количество ограничено во время компиляции. Если вызывающий код не может сразу передать правильное количество, то он и не сможет обработать ошибку.