📝 التقييم الوحدة 6: الأخطاء والاستثناءات · الدرس 16 من 17
تقييم

تقييم الدرس 16: رسائل الأخطاء والاستثناءات والوقاية منها

إجاباتك تُحفظ تلقائيًّا على هذا الجهاز. أجب ثم اضغط «صحّح ورقتي» في آخر الصفحة.

trymyNumbers[10] ! catch (Exception e)

← العودة إلى الدرس 16: رسائل الأخطاء والاستثناءات والوقاية منها

أسئلة التقييم

أسئلة تقييم الدرس: رسائل الأخطاء والاستثناءات والوقاية منها. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».

1السؤال الأول: اختر الإجابة الصحيحة

1) في الرسالة التالية، ما رقم السطر الذي فيه الخطأ؟ Main.java:8: error: cannot find symbol
2) رسالة missing return statement تعني:
3) رسالة variable x might not have been initialized تعني:
4) رسالة reached end of file while parsing سببها غالبًا:
5) ما الاستثناء الذي يسببه Integer.parseInt("abc")؟
6) أي جزء من رسالة الاستثناء يبيّن سلسلة الدوال لحظة الخطأ؟
7) في التتبّع التالي، أين حدث الخطأ أولًا؟ at Main.average(Main.java:3) ثم at Main.main(Main.java:7)
8) ما الذي يميّز التحذير عن الخطأ؟
9) ما الاستثناء عند استدعاء دالة من متغير قيمته null؟
10) ما الرسالة المتوقعة عند كتابة int n = "5";؟
11) ما فائدة الكتلة try؟
12) ما وظيفة الكتلة finally عند اضافاتها إلى الكتلة try and catch؟
13) ما نوع الاستثناء الذي يتم التعامل معه في الكود التالي
snippet
File data = new File("data.xls");        try {            Scanner scan = new Scanner(data);            System.out.println("Name\t\tMark");            while (scan.hasNextLine()) {                System.out.println(scan.nextLine());             }        } catch (FileNotFoundException ex) {            System.out.println(ex.getMessage());        }
14) ما نوع الاستثناء الذي يحدث عند محاولة فتح ملف غير موجود؟
15) لماذا نستخدم الكتلة try-catch في التعامل مع الملفات؟
16) ما نوع الاستثناءات التي يتم اكتشافها أثناء التشغيل (runtime)؟
17) تأمل الكود التالي: ماذا سيكون الناتج عند تنفيذ الكود بالأعلى؟ اختر الإجابة الصحيح مما يلي:
snippet
public static void main(String[] args) {    try {        int result = divideNumbers(10, 0);        System.out.println("Result: " + result);    }    catch (ArithmeticException e) {        System.out.println("An arithmetic exception occurred " +                e.getMessage());    }}public static int divideNumbers(int dividend, int divisor) {    return dividend / divisor;}
18) تأمل الكود التالي: ماذا سيكون الناتج عند تنفيذ الكود بالأعلى؟ اختر الإجابة الصحيح مما يلي:
snippet
public static void main(String[] args) {    try {        String [] names = {"Ali", "Bandr", "Fahad"};        System.out.println(names[3]);    }    catch (ArrayIndexOutOfBoundsException e) {        System.out.println("Error: " + e.getMessage());    }}
19) أكمل الفراغ: من أنواع الاستثناءات في جافا، النوع الذي يسمى …........ ، وهو الاستثناء الذي يتحقق منه المترجِم أثناء ترجمة البرنامج، ويُلزمك بمعالجته (try-catch أو throws) قبل التنفيذ
20) تأمل الكود التالي:
snippet
public class Main {  public static void main(String[ ] args) {     int[] myNumbers = {1, 2, 3};      System.out.println(myNumbers[10]);    // This is an error!   }}
يحتوي الكود السابق على خطأ من نوع ............................
21) أكمل الفراغ: الاستثناء FileNotFoundException من نوع ........
22) تأمل الكود التالي، ماذا سيكون الناتج عند تنفيذه؟
snippet
public class Main{    public static void main(String[] args)    {        try        {            System.out.print("A");            int x = 5 / 0;            System.out.print("B");        }        catch (ArithmeticException e)        {            System.out.print("C");        }    }}
23) ما الترتيب الصحيح لخطوات التصحيح؟
24) المطلوب طباعة مجموع الأعداد من 1 إلى 4 (=10). ما الخطأ؟
snippet
int sum = 0;for (int i = 1; i < 4; i++)    sum += i;System.out.println(sum);
25) أي اختبار يكشف الخطأ في الشرط if (total > 1000) إذا كان المطلوب «1000 فأكثر»؟
26) ما فائدة جدول التتبّع اليدوي Dry Run؟
27) لماذا نعدّل تغييرًا واحدًا في كل مرة؟
28) أي سطر يمنع القسمة على صفر؟
29) ما اختصار تنسيق الكود في NetBeans؟
30) ما الناتج؟
snippet
int sum = 7, n = 2;double avg = sum / n;System.out.println(avg);
31) أي ممارسة تجعل الكود أوضح؟
32) بعد إصلاح الخطأ يجب:

2السؤال الثاني: صح أم خطأ

1) يجب البدء بقراءة آخر رسالة خطأ في القائمة.
الصواب: خطأ
2) العلامة ^ في رسالة المترجم تشير إلى موضع الخطأ في السطر.
الصواب: صح
3) قد يكون سبب الخطأ في سطر قبل السطر المذكور في الرسالة.
الصواب: صح
4) أسطر java.base في تتبّع المكدّس تعني أن مكتبة جافا فيها خطأ يجب إصلاحه.
الصواب: خطأ
5) ArrayIndexOutOfBoundsException يحدث عند استخدام رقم خانة خارج حدود المصفوفة.
الصواب: صح
6) التحذيرات الصفراء تمنع تشغيل البرنامج.
الصواب: خطأ
7) الأخطاء النحوية Syntax errors ليست استثناءات، بل أخطاء تُكتشف أثناء الترجمة. صح أم خطأ؟
الصواب: صح
8) بعد الكتلة try لا بد من catch أو finally. صح أم خطأ؟
الصواب: صح
9) الكتلة catch (Exception e) لا تلتقط ArithmeticException. صح أم خطأ؟
الصواب: خطأ
10) OutOfMemoryError من نوع Error. صح أم خطأ؟
الصواب: صح
11) إذا أعطى البرنامج نتيجة صحيحة مرة واحدة فهو خالٍ من الأخطاء.
الصواب: خطأ
12) التحقق من المدخلات قبل استخدامها من ممارسات الوقاية من الأخطاء.
الصواب: صح
13) البناء التدريجي يعني كتابة جزء صغير وتشغيله ثم إضافة جزء آخر.
الصواب: صح
14) الدالة hasNextInt() تقرأ الرقم وتخزّنه.
الصواب: خطأ
15) الكلمة return داخل main تنهي البرنامج مبكرًا.
الصواب: صح
16) التعليق الجيد يشرح سبب الكود لا ما هو واضح منه.
الصواب: صح

3السؤال الثالث: أكمل الفراغات من القائمة المنسدلة

1) الرسالة تظهر عند كتابة totl بدل total.
الإجابة: cannot find symbol
2) القسمة على صفر تسبب .
الإجابة: ArithmeticException
3) سلسلة أسطر at في رسالة الاستثناء تسمّى .
الإجابة: Stack Trace
4) كتابة «abc» عند قراءة رقم بـ nextInt تسبب .
الإجابة: InputMismatchException

4السؤال الرابع: أكمل الفراغات

1) الكلاس الأب لكل استثناءات البرامج: .

💡 الكلاس الأساسي لجميع الاستثناءات.

الإجابة: Exception

2) القسمة على صفر تطلق Exception.

💡 القسمة على صفر: ___Exception.

الإجابة: Arithmetic

3) الفهرس خارج المصفوفة: ArrayIndexOutOfException.

💡 خارج الحدود بالإنجليزية.

الإجابة: Bounds

4) لإعلان الاستثناء في رأس الدالة نستخدم .

💡 تُكتب في رأس الدالة للتصريح بالاستثناء.

الإجابة: throws

5السؤال الخامس: التوصيل

طابِق كل عنصر في العمود (أ) بما يناسبه في العمود (ب):

  1. 1) try
  2. 2) catch
  3. 3) finally
  4. 4) throw
  5. 5) Error
  1. أ. تُنفَّذ دائمًا.
  2. ب. كود مشكوك فيه.
  3. ج. تطلق استثناء.
  4. د. مشكلة في الجهاز.
  5. هـ. تعالج الاستثناء.
المفتاح: (1) ب (2) هـ (3) أ (4) ج (5) د

6السؤال السادس: أسئلة عملية

1) تتبّع الناتج:

snippet
public class Main{    public static void main(String[] args)    {        int[] a = {1, 2, 3};        try        {            System.out.println(a[3]);        }        catch (ArrayIndexOutOfBoundsException e)        {            System.out.println("Bad index");        }        finally        {            System.out.println("Done");        }    }}
الناتج الصحيح:
Output×
Bad index
Done

2) اكتب كود يقسم 10 على 0 داخل try ويطبع «لا يمكن القسمة على صفر» عند الخطأ.

الحل النموذجي:
Main.java
public class Main{    public static void main(String[] args)    {        try        {            System.out.println(10 / 0);        }        catch (ArithmeticException e)        {            System.out.println("لا يمكن القسمة على صفر");        }    }}
Output – JavaApplication (run)×
run:
لا يمكن القسمة على صفر
BUILD SUCCESSFUL (total time: 0 seconds)
قارن إجابتك بالحل:
3)

أكمل الكود من مثال الدرجات: معالجة رقم خارج حدود المصفوفة

try {    idx = scan.nextInt();    System.out.println("The mark is: " + marks[idx]);} ( e) {    System.out.println("ERROR: the number " + idx + " is out of range");} {    System.out.println("finally block");}
الإجابة: (1) catch · (2) ArrayIndexOutOfBoundsException · (3) finally

4) تتبّع الناتج (برنامج فيه خطأ منطقي):

snippet
int count = 0;for (int i = 1; i <= 7; i++) {    if (i % 2 == 1)        count++;}System.out.println(count);
الناتج الصحيح:
Output×
4

5) تتبّع الناتج بعد التصحيح:

snippet
int count = 0;for (int i = 1; i <= 7; i++) {    if (i % 2 == 0)        count++;}System.out.println(count);
الناتج الصحيح:
Output×
3
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».