[#] В Rust 1.0 исключений не будет
habrabot(difrex,1) — All
2014-11-06 11:43:25


![Rust Logo][1]Сегодня Аарон Тюрон — разработчик, недавно присоединившийся к разработке Rust в Mozilla — [объявил][2] об отсрочке реализации какого-либо механизма исключений, кроме уже существующего макроса `try!` и типа `Result`, до неопределённого момента _после_ первого релиза языка программирования Rust. Это означает, что в Rust 1.0 будут отсутствовать исключения первого класса — то есть, полностью интегрированные с другими фичами языка. Для обработки ошибок в данной момент в Rust существует тип `Result { Ok(value), Err(why) }` и макрос `try!`. Тип `Result` представляет из себя перечисление (enum), похожее на `Option { Some(value), None }` и связанное с ним по смыслу. Вариант `None` типа `Option` говорит об отстутствии значения, а вариант `Err(why)` типа `Result` уточняет, почему значение отсутствует. Rust предлагает возвращать тип `Result` из функций, чтобы передавать значение возврата _или_ причину, по которой значение вернуть не удалось. Макрос `try!` в свою очередь позволяет автоматически возвращать `Err(why)` из текущей функции, если вызов другой функции не удался (применяется к объекту типа `Result`). [Читать дальше →][3]

[1]: http://habrastorage.org/getpro/habr/post_images/3e5/11e/a6f/3e511ea6f5963a2c86ed90176d924c50.png
[2]: https://github.com/rust-lang/rfcs/pull/243#issuecomment-61559683
[3]: http://habrahabr.ru/post/242269/#habracut