السلام عليكم و رحمه الله تعالى وبركاته...
اهلاآ بكم في مدونتي """عالم البرمجه"""
عالم البرمجه
ساشرح لكم اليوم كيفيه الاستثناءات في اكواد الجافا
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
نتمنى أن يكون قد نال اعجابكم وان شاء الله تعالى نلتقي في
موضوع جديد مواضيع جديده من كل الاكواد المميزات
والفريده ...
تعليقات
إرسال تعليق