@vicenta_kertzmann
Rust предоставляет несколько механизмов для обработки ошибок:
@vicenta_kertzmann
Rust обладает несколькими механизмами для обработки ошибок:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
fn divide(numerator: i32, denominator: i32) -> Result<i32, String> {
if denominator == 0 {
Err(String::from("Делитель не может быть нулем"))
} else {
Ok(numerator / denominator)
}
}
fn main() {
let result = divide(42, 0);
match result {
Ok(value) => println!("Результат деления: {}", value),
Err(error) => println!("Ошибка: {}", error),
}
}
|
1 2 3 4 |
fn main() {
let vector = vec![1, 2, 3];
println!("Элемент с индексом 10: {}", vector[10]);
}
|
В данном примере при выполнении программы возникнет ошибка "паника из-за переполнения индекса вектора".
1 2 3 |
let result: Result<i32, String> = Ok(42);
let value = result.unwrap();
println!("Результат: {}", value);
|
В данном примере unwrap возвращает значение Ok, если оно есть, и вызывает панику, если в результате содержится Err.
Кроме того, Rust также предлагает другие техники обработки ошибок, такие как оператор ? для упрощения и распространения ошибок и макрос expect для вывода дополнительной информации при возникновении ошибки.