0Pricing
Java Academy · درس

الاستثناءات المفحوصة مقابل غير المفحوصة

افهم الفرق بين الاستثناءات المفحوصة وغير المفحوصة في Java.

الاستثناءات المفحوصة مقابل غير المفحوصة درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 2 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 3 دروس في المجموع.

مقدمة

تأتي استثناءات Java في فئتين: المفحوصة وغير المفحوصة. تساعدكم معرفة الفرق على تصميم الدوال بشكل صحيح.

الاستثناءات المفحوصة

ترث الاستثناءات المفحوصة من Exception (لكن ليس RuntimeException). يُلزمكم المترجم بمعالجتها أو التصريح بها باستخدام throws.

الشفرة: IOException مفحوص

يُعد IOException استثناءً مفحوصًا. يجب عليكم التقاطه أو التصريح به في توقيع الدالة.

public class Main {
  public static void main(String[] args) {
    try {
      java.io.FileReader fr = new java.io.FileReader("missing.txt"); // checked exception
      fr.read();
      fr.close();
    } catch (java.io.IOException e) {
      System.out.println("Handled IOException: " + e.getMessage());
    }
  }
}

الاستثناءات غير المفحوصة

ترث الاستثناءات غير المفحوصة من RuntimeException. ولا يفرض المترجم معالجتها. ومن أمثلتها: NullPointerException وArithmeticException.

الشفرة: NPE غير مفحوص

يُعد NullPointerException استثناءً غير مفحوص. يمكنكم التقاطه، لكن المترجم لا يفرض عليكم ذلك.

public class Main {
  public static void main(String[] args) {
    String s = null;
    try {
      System.out.println(s.length()); // unchecked exception
    } catch (NullPointerException e) {
      System.out.println("Caught NullPointerException");
    }
  }
}

الشفرة: التصريح باستخدام throws

يمكن التصريح عن الاستثناءات المفحوصة باستخدام throws. ويجب على المستدعين معالجتها أو تمريرها.

public class Main {
  static void risky() throws java.io.IOException {
    throw new java.io.IOException("I/O problem");
  }
  public static void main(String[] args) {
    try {
      risky();
    } catch (java.io.IOException e) {
      System.out.println("Handled in main: " + e.getMessage());
    }
  }
}

التحقق من المفحوصة وغير المفحوصة

تحقق سريع: أي العبارات التالية صحيحة بشأن الاستثناءات المفحوصة وغير المفحوصة؟

خلاصة

خلاصة: يجب التصريح عن الاستثناءات المفحوصة (IOException) أو معالجتها. أما الاستثناءات غير المفحوصة (RuntimeException)، فلا يلزم التعامل معها.

الأسئلة الشائعة

هل درس «الاستثناءات المفحوصة مقابل غير المفحوصة» مجاني؟

نعم — نص درس «الاستثناءات المفحوصة مقابل غير المفحوصة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 3 دروس في المجموع.

ماذا ستتعلم في «الاستثناءات المفحوصة مقابل غير المفحوصة»؟

افهم الفرق بين الاستثناءات المفحوصة وغير المفحوصة في Java. تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟

لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.

كم من الوقت يستغرق درس «الاستثناءات المفحوصة مقابل غير المفحوصة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟

نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. try/catch/finally
  2. الاستثناءات المفحوصة مقابل غير المفحوصة
  3. قراءة Stack Traces
← العودة إلى Java Academy