Java Ch6

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 17

1

‫‪ ‬اإلستثنا ء هو حدوث أمر غير عادي وغير مألوف‪.‬‬


‫‪ ‬ولذلك‪ ،‬فإن معالجة اإلستثناءات ‪Exception‬‬
‫‪Handling‬هي التقاط أو اكتشاف وتدوين والتعامل‬
‫مع حدوث حاالت خاطئة وقد تستغل هذه األخطاء‬
‫لتبيان أمور أخرى‪.‬‬
‫‪ ‬هذه األخطاء تحصل في سياق البرنامج نتيجة ألمر‬
‫مؤقت عند تنفيذ البرنامج مثل نقصان الذاكرة الالزمة‬
‫لتنفيذ البرنامج‪ ،‬خطأ في اسم الملف أو في تكوين‬
‫الملف‪ ،‬خطأ في رقم معين يؤدي الى القسمة على‬
‫صفر ‪ ...‬الخ‬
‫‪ ...‬تابع‬
‫‪ ‬إذا لم يتم التعامل مع هذه األخطاء بالطريقة المناسبة‬
‫فإن تأثيرها يكون مشابها لألخطاء ( ‪ )bugs‬ولكن إذا‬
‫تم التعامل معها بالطريقة المناسبة فإنه يمكن السيطرة‬
‫عليها ‪.‬‬

‫‪ ‬معالجة اإلستثناءات تعد أداة لتحسين إدارة األخطاء عن‬


‫طريق إيجاد منحى أفضل في مهاجمة الشكلة‪.‬‬
‫‪ ‬لغة جافا تفرق بين األخطاء واالستثناءات وتعرف لغة‬
‫جافا االستثناء على انه حدث غير عادي يقطع تدفق‬
‫البرنامج‪.‬‬
‫‪ ‬هناك ثالثة أنواع من االستثناءات بما فيها األخطاء‪:‬‬
‫‪ ‬االستثناءات العادية ‪Normal Exceptions‬‬
‫‪ ‬االستثناءات التنفيذية ‪Runtime Exceptions‬‬
‫‪ ‬األخطاء ‪Errors‬‬
‫ تابع‬...
Throwable

Exception Error

RuntimeException IOException
‫‪ ‬هذه االستثناءات تحصل في جزء محدد من البرنامج أي ان‬
‫الجزء الذي تحصل فيه معروف ويمكن اكتشافه بسهوله مثل‬
‫‪ File not found‬يحصل هذا االستثناء عند محاولة الوصول‬
‫الى ملف معين ولكن الملف غير موجود‪.‬‬
‫‪ ‬هذا النوع من االستثناءات صعب جدا ً تحديد مكانها ويمكن أن‬
‫يحتوي أي جزي من البرنامج وهو شائع حدوثه ومن األمثلة‬
‫المشهورة عليه القسمة على صفر ‪ division by zero‬أي‬
‫عند القسمة على صفر‪.‬‬
‫‪ ‬يعتبر االشد خطورة حيث يصعب التنبؤ به او التعامل معه لذلك‬
‫يعتبر خارج نطاق اليد والتحكم به والسيطرة عليه ومن األمثلة‬
‫على هذه األخطاء عطب المترجم ‪.‬‬
‫‪ ‬تقوم هذه الجملة بما يلزم من قذف االستثناء وتمرير المعلومات الالزمة لتبيان‬
‫الخطأ‪ ،‬وهي كلمة محجوزة‪.‬‬
‫‪ ‬ان كلمة ‪ throws‬تعمل على مستوى المنهج أي عند تعريف المنهج و تستخدم‬
‫لرمي استثناء أو أكثر‪.‬‬

‫{‪public void thisIsTrouble () throws anException‬‬


‫} ‪// method body‬‬
‫‪public void thisIsMultipleExceptionMethod throws‬‬
‫{ ‪anException,anotherException‬‬
‫}‪// method body‬‬
‫ لقذف االستثناء ان وجد الى خارج‬throw ‫ تستخدم جملة‬
.‫المنهج‬
public class Ex {
static float assMark(float ass1, float ass2) throws
Exception
{
if ((ass1 > 100)|| (ass2 > 100))
{
throw new Exception (“Error value !");
}
return (ass1 * 5)/100 + (ass2 * 5)/100;
}
public static void main(String[] args) throws Exception {
Ex O1 = new Ex();
float x=50;
float y=80;
float z = O1.assMark(x,y);
System.out.println(z);
}}
‫‪ ‬كتلة ‪ try‬تبدأ بكلمة ‪ try‬وتتبعها اقواس الكتلة وجسم الكتلة‬
‫يكون بين هذه األقواس‪.‬‬
‫‪ ‬مثال‪:‬‬
‫‪try‬‬
‫{‬
‫جمل استدعاء المنهج‬
‫}‬
‫‪ ‬كل كتلة من كتل ‪ try‬يكون مصاحبا ً لها كتلة أو أكثر من كتل‬
‫‪ catch‬ويتم معالجتها عند قذف االستثناء وكتلة ‪ catch‬تتعامل‬
‫مع استثناء واحد من النوع ‪.Exception‬‬
2 ‫مثال‬
public class Ex {
public int fac(int x, int y)
{
int z =x / y;
return x;
}
public static void main(String[] args)
{
try{
Ex Obj1 = new Ex();
System.out.println(Obj1.fac(5,0));
}
catch(Exception e)
{
System.out.println("Error : "+e);
}
}}
‫‪ ‬تستخدم هذه الجملة في تنفيذ جزء من البرنامج بغض النظر عن‬
‫قذف االستثناءات وتكون موجودة في نهاية جميع معالجة‬
‫االستثناءات وهي موجودة في لغة جافا وغير موجودة في غيرها‬
‫من اللغات‪.‬‬
‫‪ ‬في المثال ‪ 2‬أضف المقطع التالي في نهاية جمل معالجة‬
‫االستثناءات‬
‫‪finally‬‬
‫{‬
‫;)" ‪System.out.println("END‬‬
‫}‬
THE OUTPUT

You might also like