القائمة الرئيسية

الصفحات

 السلام عليكم و رحمه الله تعالى وبركاته...


اهلاآ بكم في مدونتي """عالم البرمجه"""


عالم البرمجه


ساشرح لكم اليوم كيفيه الاستثناءات في اكواد الجافا 

Exceptions


واولآ..


يجب ان نعرف ماهي الاسباب التي تؤدي الى الاستثناءات؟



👈  في حال إدخال قيمة لاتساوي مع نوع المتغير الذي ستخزن فيه.

👈 في حال إدخال رقم من فئه index وليس موجود في مصفوفة أو في متغير مثل: String.

👈 عندما يكون البرنامج يتصل بالشبكة و فجأةً إنقطع الإتصال.

👈. عدم قدره البرنامج عندما يحاول قراءة معلومات من ملف نصي, و كان هذا الملف غير موجود.




ماهي الاسباب التي تؤدي الى الإستثناءات؟

 قد تحدث بسبب  المبرمج (Termnal), أو بسبب الأجهزة المستخدمة (Android, iPhone....)...


لذلك تم تقسيم الإستثناءات إلى ثلاث اقسام أساسية:

Checked Exception: 


تخبرك بـ خطأ برمجي يحدث أثناء ترجمة البرنامج (أي قبل تشغيل الكود).

Unchecked Exception:


 وهو يعني خطأ منطقي يحدث أثناء تشغيل البرنامج.

Error:


 تعني خطأ يحدث بسبب الجهاز الذي نحاول تشغيل البرنامج عليه.




مثاااااااال......عن

 Checked Exception:


>>>>>><<<<<


>>>public static class Test {


>>> public static void main(String[] args) {


>>> int a ; a = "this is incompatible type, 'a' should be String";

 } 

}

>>>>><<<<<<

ستلاحظ ضهور رساله تخبرك...


Exception in thread "main"

 java.lang.RuntimeException: Uncompilable source code - incompatible types: java.lang.String cannot be converted to int


وهو يعني


هذا الخطأ يقول أن هناك مشكلة في النوع المستخدم لتخزين البيانات.


ثم تكلم بسبب المشكلة  لا يمكن تحويل الـ String لـ int, أي لا يمكن تخزين قيمة نوعها Stringفي متغير نوعه int


____________________________________

 النوع الثاني. Unchecked Exception:

>>>>>>>><<<<<<<<


مثاااااااال.......



>>>public class Test {


>>> public static void main(String[] args) { 


>>>int[] a = { 1, 2, 3, 4, 5 };


 System.out.println( a[10] ); 

}

 } 


ستلاحظ ضهور...

Exception in thread "main"


 java.lang.ArrayIndexOutOfBoundsException: 10



يخبرك هذا الخطأ  أن العنصر ليس موجود في المصفوفات.


وايضا لانهبسبب المشكلة و هي أنه لم يجد عنصر يحمل الـ index رقم 10.



____________________


Error...


ويعني هاذا .


 أن نظام التشغيل لا يقدر أن يشغل هذا البرنامج لأن ذاكرة الجهاز ممتلئة. و عندها سيظهر الرسالة التالية لتوضيح الخطأ JVM is out of Memory


لذلك تجد بعض البرامج تحفظ الأشياء التي يفعلها المستخدم كل مدة معينة, و هكذا لن يقلق من  فقدان البيانات..


________________


كيف يمكنك إلتقاط الإستثناء


ويسما با Catching Exception,  يعني عن طريقة تسمح لك


 بحماية برنامجك من أي كود تضن بأنه قد يحدث أي خطأ باستخدام الجملتين

 try 


 catch


و catch وهي عباره عن ما يمكنك من خلالها معرفة كل شيء عن الخطأ الذي حدث في البرنامج


الكود الذي تضن ان فيه شيئ من الشكوك  يجب وضعه بداخل حدود الجملة try.



طريقة عرض الجمل try/catch


مثال........





>>>>try {

 // Code 

//ضع الاكواد التي قد تشك فيها بأنها غير متوافقه



>>>} catch(ExceptionType e) { 


// Error is Code


 // عند رمي إستثناء   try الان نكتب امر من تحدد للبرنامج ماذا 


وهاذه بعض من الامثله عن onStart وغيرها 


1

import android.os.Bundle;

2

import android.os.PersistableBundle;

3

import android.support.v7.app.AppCompatActivity;

4

import android.widget.Toast;

5

 

6

 

7

public class MainActivity extends AppCompatActivity {

8

    @Override

9

    protected void onCreate(Bundle savedInstanceState) {

10

        super.onCreate(savedInstanceState);

11

        setContentView(R.layout.activity_main);

12

        Toast.makeText(getApplicationContext(),"onCreate was Called",Toast.LENGTH_SHORT).show();

13

    }

14

 

15

    @Override

16

    protected void onStart() {

17

        super.onStart();

18

        Toast.makeText(getApplicationContext(),"onStart was Called",Toast.LENGTH_SHORT).show();

19

 

20

    }

21

 

22

    @Override

23

    protected void onPause() {

24

        super.onPause();

25

        Toast.makeText(getApplicationContext(),"onPause was Called",Toast.LENGTH_SHORT).show();

26

    }

27

 

28

    @Override

29

    protected void onStop() {

30

        super.onStop();

31

        Toast.makeText(getApplicationContext(),"onStop was Called",Toast.LENGTH_SHORT).show();

32

    }

33

 

34

    @Override

35

    protected void onDestroy() {

36

        super.onDestroy();

37

        Toast.makeText(getApplicationContext(),"onDestroy was Called",Toast.LENGTH_SHORT).show();

38

    }

39

 

40

    @Override

41

    protected void onRestart() {

42

        super.onRestart();

43

        Toast.makeText(getApplicationContext(),"onRestart was Called",Toast.LENGTH_SHORT).show();







الى هنا ينتهي موضوعي عن إستثناات اكواد الجافا Exceptions


نتمنى أن يكون قد نال اعجابكم وان شاء الله تعالى نلتقي في


 موضوع جديد مواضيع جديده من كل الاكواد المميزات


 والفريده ...




تعليقات