Skip to content
เข้าสู่ระบบ

Error Handling Patterns

Patterns สำหรับ error handling ใน Rust

fn divide(a: i32, b: i32) -> Result<i32, String> {
if b == 0 {
Err("Division by zero".to_string())
} else {
Ok(a / b)
}
}
fn main() {
// Explicit matching
match divide(10, 2) {
Ok(result) => println!("Result: {}", result),
Err(e) => println!("Error: {}", e),
}
// unwrap (panics on Err)
let result = divide(10, 2).unwrap();
println!("Unwrap: {}", result);
// expect (panics with message)
let result = divide(10, 2).expect("Division failed");
println!("Expect: {}", result);
// unwrap_or (default value)
let result = divide(10, 0).unwrap_or(0);
println!("With default: {}", result);
// unwrap_or_else (lazy default)
let result = divide(10, 0).unwrap_or_else(|e| {
eprintln!("Error: {}", e);
-1
});
println!("Lazy default: {}", result);
// is_ok / is_err
let result = divide(10, 0);
println!("is_err: {}", result.is_err());
}

เข้าสู่ระบบเพื่อดูเนื้อหาเต็ม

ยืนยันตัวตนด้วยบัญชี Google เพื่อปลดล็อกบทความทั้งหมด