The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск языка программирования Rust 1.43"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Подсказка: Для слежения за появлением новых сообщений в нити, нажмите "Проследить за развитием треда".
. "Выпуск языка программирования Rust 1.43" +/
Сообщение от Forthemail (ok), 25-Апр-20, 11:34 
> try/catch ты можешь не писать, и исключение продолжит разматывать стек.

Как будто From для Result это бесплатно, открываешь машинный код и видно, что теперь везде есть ветки проверки результата на Ok и если не Ok, то вызов From, а затем return с результатом преобразования. Чем это тебе не разматывание стека? :) Точно также получается кучка преоборазований поэтапно с возвратом в каждую функцию выше и дропом всего, что надо дропнуть.
С исключениями теоретически и на практике это может быть не нужно, например если в Java ты бросаешь исключение без заполнения stack trace, а это легко сделать, то фактически будет выполнен переход сразу на тот try catch какой надо. Весь стек ниже будет просто выброшен без пустопорожних преобразований как в Result и From.
> Одна из основных задач Result -- помочь программисту не забыть обработать ошибки:

Я исключения из Java в пример привожу, там есть checked exception.
Если это checked exception, ты просто обязан сделать одно из двух, либо поставить try catch, либо указать, что ты его пробрасываешь выше в throws метода.
Это от Result становится неотличимо по поведению, только синтаксически.
Хорошо, пусть у тебя будет:
let ret = method().map_err(|_| "Method failed".to_string())?
А если тебе надо обработать ошибку, то будет уже иное:
if let Err(e) = method() {
} else {
}
Может быть match менее многословно?
match mathod() {
    Ok(_) => {}
    Err(_) => {}
}
Да по мне таже фигня.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Выпуск языка программирования Rust 1.43, opennews, 23-Апр-20, 23:37  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру