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

Error Trait

std::error::Error trait เป็น foundation สำหรับสร้าง custom error types ใน Rust

การ implement Error trait ขั้นพื้นฐานต้อง implement Display และ Debug ด้วย

use std::error::Error;
use std::fmt;
#[derive(Debug)]
struct ValidationError {
field: String,
message: String,
}
// ============================================
// Display - user-friendly message
// ============================================
impl fmt::Display for ValidationError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "Validation error on '{}': {}", self.field, self.message)
}
}
// ============================================
// Error trait - standard error behavior
// ============================================
impl Error for ValidationError {}
fn validate_name(name: &str) -> Result<(), ValidationError> {
if name.is_empty() {
return Err(ValidationError {
field: "name".to_string(),
message: "cannot be empty".to_string(),
});
}
if name.len() < 2 {
return Err(ValidationError {
field: "name".to_string(),
message: "must be at least 2 characters".to_string(),
});
}
Ok(())
}
fn main() {
for name in &["", "A", "Alice"] {
match validate_name(name) {
Ok(()) => println!("'{}' is valid!", name),
Err(e) => println!("Error: {}", e),
}
}
}

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

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