تخطَّ إلى المحتوى

🦀 شرح Rust

معالجة الأخطاء

الدرس 15 من 25· ⏱ 1 دقائق قراءة

panic! للأخطاء غير القابلة للاسترداد

fn main() {
    panic!("خطأ فادح");   // يوقف البرنامج
}

unwrap() وexpect() يسبّبان panic عند الفشل:

let x = Some(5).unwrap();             // 5
let f = std::fs::read_to_string("x")
    .expect("تعذّر قراءة الملف");

Result للأخطاء القابلة للاسترداد

استخدم Result للأخطاء المتوقّعة بدل panic.

المعامل ? — نشر الخطأ

يعيد الخطأ تلقائيًا من الدالة عند الفشل، وإلا يستخرج القيمة:

use std::fs;

fn read_config() -> Result<String, std::io::Error> {
    let content = fs::read_to_string("config.txt")?;  // ? ينشر الخطأ
    Ok(content)
}

أنظف بكثير من match المتكرّر.

القاعدة

  • خطأ متوقّع (ملف مفقود، إدخال خاطئ) → Result + ?.
  • خطأ برمجي مستحيل الاسترداد → panic!.

🎯 التالي: المجموعات (Collections).

هل كان هذا الدرس مفيدًا؟