استثناءات Java - حاول ... Catch
استثناءات Java
عند تنفيذ كود Java ، يمكن أن تحدث أخطاء مختلفة: أخطاء في الترميز قام بها المبرمج ، أو أخطاء ناتجة عن إدخال خاطئ ، أو أشياء أخرى غير متوقعة.
عند حدوث خطأ ما ، ستتوقف Java عادةً وتنشئ رسالة خطأ. المصطلح التقني لهذا هو: سوف تطرح Java استثناء (بطرح خطأ).
جافا حاول وأمسك
تسمح try
لك العبارة بتحديد كتلة من التعليمات البرمجية ليتم اختبارها بحثًا عن الأخطاء أثناء تنفيذها.
تسمح catch
لك العبارة بتحديد كتلة من التعليمات البرمجية ليتم تنفيذها ، في حالة حدوث خطأ في كتلة try.
تأتي الكلمات الرئيسية try
والكلمات catch
الرئيسية في أزواج:
بناء الجملة
try {
// Block of code to try
}
catch(Exception e) {
// Block of code to handle errors
}
ضع في اعتبارك المثال التالي:
سيؤدي هذا إلى ظهور خطأ ، لأن myNumbers [10] غير موجود.
public class Main {
public static void main(String[ ] args) {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]); // error!
}
}
سيكون الإخراج شيئًا كالتالي:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at Main.main(Main.java:4)
في حالة حدوث خطأ ، يمكننا استخدامه try...catch
للقبض على الخطأ وتنفيذ بعض التعليمات البرمجية لمعالجته:
مثال
public class Main {
public static void main(String[ ] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("Something went wrong.");
}
}
}
سيكون الإخراج:
Something went wrong.
أخيرا
تتيح لك العبارة finally
تنفيذ التعليمات البرمجية ، بعد try...catch
ذلك ، بغض النظر عن النتيجة:
مثال
public class Main {
public static void main(String[] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("Something went wrong.");
} finally {
System.out.println("The 'try catch' is finished.");
}
}
}
سيكون الإخراج:
Something went wrong.
The 'try catch' is finished.
رمي الكلمة
تسمح throw
لك العبارة بإنشاء خطأ مخصص.
يتم throw
استخدام العبارة مع نوع الاستثناء . هناك العديد من أنواع الاستثناءات المتوفرة في Java: ArithmeticException
،
FileNotFoundException
، ArrayIndexOutOfBoundsException
، SecurityException
، إلخ:
مثال
قم بطرح استثناء إذا كان العمر أقل من 18 عامًا (اطبع "تم رفض الوصول"). إذا كان عمرك 18 عامًا أو أكثر ، فقم بطباعة "تم منح حق الوصول":
public class Main {
static void checkAge(int age) {
if (age < 18) {
throw new ArithmeticException("Access denied - You must be at least 18 years old.");
}
else {
System.out.println("Access granted - You are old enough!");
}
}
public static void main(String[] args) {
checkAge(15); // Set age to 15 (which is below 18...)
}
}
سيكون الإخراج:
Exception in thread "main" java.lang.ArithmeticException: Access denied - You must be at least 18 years old.
at Main.checkAge(Main.java:4)
at Main.main(Main.java:12)
إذا كان عمرك 20 عامًا ، فلن تحصل على استثناء:
مثال
checkAge(20);
سيكون الإخراج:
Access granted - You are old enough!