![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