منتدي حضن الغريب
أهلا وسهلا بك ضيفنا الكريم، إذا كانت هذه زيارتك الأولى للمنتدى، فيرجى التكرم
بالتسجيل ،أما إذا رغبت بقراءة المواضيع والإطلاع فتفضل بزيارة القسم الذي ترغب أدناه.
وجميع الروابط بالمنتدى متاحة اليك حتى لانضغط على احد بالتسجيل واذا اعجبك منتدنا
فانضم الينا وشكرا لكم جمعيا زورنا الكرام
منتدي حضن الغريب
أهلا وسهلا بك ضيفنا الكريم، إذا كانت هذه زيارتك الأولى للمنتدى، فيرجى التكرم
بالتسجيل ،أما إذا رغبت بقراءة المواضيع والإطلاع فتفضل بزيارة القسم الذي ترغب أدناه.
وجميع الروابط بالمنتدى متاحة اليك حتى لانضغط على احد بالتسجيل واذا اعجبك منتدنا
فانضم الينا وشكرا لكم جمعيا زورنا الكرام
منتدي حضن الغريب
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

منتدي حضن الغريب


 

التسجيلالتسجيل  الرئيسيةالرئيسية  أحدث الصورأحدث الصور  دخولدخول  

 

 سلسلة دروس الجافا الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق

اذهب الى الأسفل 
كاتب الموضوعرسالة
nsrbulhmd
المدير العام
المدير العام
nsrbulhmd


الجنس : ذكر
عدد الرسائل : 1282
تعاليق : عندما تنتقد أحداً فبعين النحل تعود أن تـُبصـِر
ولا تنظـُر للناس
بعين الذباب فتقع على ماهو مُستقذِر
و سأحكي لك قصه العنزة والذئب حتى لا
تأمن من يـُمكِر
وحينما يثق بك أحد فإياك ثم إياك أن تـُغدِر


تاريخ التسجيل : 09/02/2009

الاضافات
منتدنا على الفيس بوك:

سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق Empty
مُساهمةموضوع: سلسلة دروس الجافا الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق   سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق Icon_minitime1الثلاثاء 24 مارس 2009, 10:56 pm

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

سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق Title_right سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق Spaceالمقدّمة: سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق Title_left






في رأيي المتواضع ان أفضل وسيلة لفهم أوامر الـ try والـ catch هي أن نحاول قبلاً أن نستوعب الـ Exceptions بشكل تام.



إعلان حالة الطوارئ (throws) هي الوسيلة التي تستخدمها الآلة التخيلية في الجافا للإعلان عن وجود مشكلة أو خطأ في تشغيل البرنامج



فمثلاً حين تحدث مشكلة ما لا تستطيع الآلة التخيلية التعامل معها لذا توقف
عمل البرنامج تماماً (بشكل غير لائق بالنسبة للمبرمج طبعاً) وتعلن المشكلة
التي واجهتها بأن تقوم بعملية throw (بالعربي قذف أو إلقاء) لهذه المشكلة.



في الحقيقة الآلة التخيلية تقوم بالإعلان عن نوعين من الأخطاء أو المشاكل،
Errors وهي الأخطاء التي لا حيلة للمبرمج في التعامل معها (مثلاً أن ينقطع
التيار الكهربائي) والنوع الثاني هو الـ Exceptions وهي الأخطاء التي يمكن
أن يتوقعها المبرمج ولديه الوسيلة للتعامل معها.



إذاً لننسَ الـ Errors ونحاول التركيز على الـ Exceptions.



حتى نفهم خطورة الexceptions وفائدتها في الوقت ذاته.. دعوني أستخدم مثالي المفضل.. الكرة



لنتخيل أن الآلة التخيلية حين تواجه مشكلة تضعها في كرة زجاجية وتقذف الكرة في الهواء..



ماذا سيحدث؟.. سترتفع الكرة في الهواء.. ثم سترتد إلى الأرض يفعل
الجاذبية.. حتى.. هممم حتى ترتطم بالأرض وتتفتت إلى قطع صغيرة وهذا يعني
أن البرنامج سيتوقف تماماً عن العمل!



ما الحل في رأيكم؟ أليس لطيفاً لو كان لدينا في البرنامج وسيلة لالتقاط الكرة بالسلامة قبل أن تتكسر على الأرض؟


سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق Title_right سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق Spaceالمشكلة: سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق Title_left






لنأخذ هذا المثال البسيط.



سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق L20_tryexample



في السطر الأول أنشأت متغير من نوع نصي ووضعت فيه القيمة x



في السطر الثاني أنشأت متغير من نوع رقم صحيح وقرأت القيمة الرقمية من
المتغير النصي. طبعاً في الحالات العادية من المفترض أن تكون القيمة
الموجودة في النص رقم.. مثلاً "123" ولكن في حالتنا كانت حرف وليس رقماً..
لذا عملية القراءة ستسبب حدوث exception كما يلي:



سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق L20_tryexampleRun



ما حدث في هذه الحالة نسميه Exception. وما ترونه في الصورة الأخيرة هي
وسيلة الآلة التخيلية لإخبارنا أنها واجهت مشكلة، ولا تعرف كيف يمكن أن
تحلها. وفي الحقيقة في الصورة ستجدون اسم الـ Exception وهو:
NumberFormatException.



وهذا هو في الواقع اسم كرتنا الزجاجية التي سيلقيها البرنامج في حال فشل في قراءة رقم من النص.


سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق Title_right سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق Spaceخطة العمل.. فكر معي سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق Title_left







طبعاً في مثالنا البسيط، تعمّدتُ وضع قيمة نصية في المتغير النصي.. وهذا
يعني أن هناك دائماً مجال لأن يقوم شخص ما بإدخال قيم خاطئة، وهذا يعني
أننا يجب أن نكون حذرين نوعاً في التعامل مع أنواع المدخلات.



كيف نحل ذلك؟ ما رأيكم في هذا السيناريو:



سنحاول قراءة قيمة رقمية صحيحة عن طريقة Integer.parseInt من المتغير النصي str..



إذا فشلنا وألقت الآلة التخيلية بالاستثناء NumberFormatException سنكون مستعدين وسنلتقطه، ثم نتعامل معه.


سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق Title_right سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق Spacetry & catch سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق Title_left







ها قد وصلنا أخيراً إلى سؤال الأخ الفاضل فتى الذهب.. كيف أستخدم التراي والكاتش.. :) ؟؟



try & catch نستخدمهم في حالة كانت لدينا وظيفة method من المحتمل أن تقذف exception.



هكذا:



سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق L20_tryexampleSol



الآن القسم الأول (try) نحاول أن نجرب فيه شيئاً ما.. في حالتنا نحاول
قراءة رقم من متغير نصي.. لنفترض أن المحاولة فشلت.. وألقى البرنامج
exception في هذه الحالة سيتحول الموضوع إلى ال catch..



ونلاحظ أننا بين قوسين بعد كلمة catch مباشرة حددنا نوع الاكسبشن الذي
سنلتقطه.. إذا وضعنا Exception فقط.. فإنه سيلتقط أي نوع من الاستثناءات
بدون تحديدها (فجميع الاستثناءات تكون فئة مستمدة من فئة Excetption).



في داخل الكاتش نستطيع أن نحدد ماذا سنفعل في حالة حدوث الخطأ أو المشكلة..



ويمكننا أن يكون في جزء الـ try أكثر من statement تسبب كل منها exception
مختلف، وهكذا يمكن أن يكون لدينا أكثر من catch بحيث يتكفّل كل منها بـ
exception مختلف، ومن الممكن أيضاً استخدام جزء أخير finally بحيث يلتقط
أي exception آخر، هكذا:



سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق L20_tryCatchFinally


سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق Title_right سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق Spaceسيكون جميلاً.. سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق Title_left







لو أنني غطيتُ الـ throw و الـ throws أيضاً.. سأحاول تغطيتهما في وقت لاحق.. ولكن أتصور أنه يمكنك أن تفتح الباب لفهمهما الآن..



سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق Title_right سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق Spaceأفكار سلسلة دروس الجافا      الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق Title_left






يمكنك دائماً أن تقوم بتعريف الاستثناءات الخاصة بك بحيث تكون extends
Exception لتتعامل مع الاستثناءات الخاصة ببرامجك (فإذا كان لديك مثلاً
كلاس للخط المرسوم على الشاشة، فأتصور سيكون مفيداً لو وضعت في اعتبارك
أنه يمكن أن يحاول المستخدم رسم الخط خارج حدود الرسم وعملت الاستثناء
المناسب)



بالمناسبة Exception كلاس موجود في java.lang ولا تحتاج لعمل أي import



سأبذل جهدي للإجابة عن أي سؤال من واقع الخبرة أو من المراجع إن شاء الله، فلا تتردد في طرح أي استفسار..



تحياتي



وفوق كل ذي علم عليم
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://nasserstar.ahlamontada.com
 
سلسلة دروس الجافا الدرس التاسع عشر والاخير واتمنى للجميع الفائدة والتفوق
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-
» سلسلة دروس الجافا الدرس التاسع
» سلسلة دروس الجافا الدرس الرابع عشر
» سلسلة دروس الجافا الدرس الخامس عشر
» سلسلة دروس الجافا الدرس الاول
» سلسلة دروس الجافا الدرس السادس عشر

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتدي حضن الغريب :: منتدى البرامج والكمبيوتر والحماية والماسنجر :: قسم الكمبيوتر والحماية والهواتف والشفرات-
انتقل الى: