مزايا استثناءات في جافا لغة برمجة
استثناء هو حدث ، والذي يحدث اثناء تنفيذ البرنامج ، ان يعرقل التدفق العادي للبرنامج وتعليمات.
ميزة 1 : - معالجة الخطأ فصل من مدونة "العاديه" مدونة
الاستثناءات توفر وسيلة لفصل تفاصيل ما تفعل شيئا عندما اصل العادي يحدث من المنطق الرئيسي للبرنامج. في البرمجه التقليديه ، واكتشاف الخطأ ، والابلاغ ، والتعامل مع كثير من الأحيان يؤدي الى الخلط بين السباغيتي المدونه. على سبيل المثال ، ان تنظر في طريقة pseudocode هنا ان يقرأ كامل الملف الى الذاكرة :
(Readfile
فتح ملف ؛
تحديد حجمه ؛
ان تخصيص الكثير من الذاكرة ؛
قراءة الملف الى الذاكرة ؛
اغلاق ملف ؛
)
وللوهله الأولى ، يبدو هذا مهمة بسيطة بما فيه الكفايه ، ولكنه يتجاهل كل الاخطاء المحتملة التالية :
• ماذا يحدث اذا كان الملف لا يمكن فتح؟
• ماذا يحدث اذا كان طول ملف لا يمكن تحديده؟
• ماذا يحصل اذا ما يكفي من الذاكرة لا يمكن أن يخصص؟
• ماذا سيحدث اذا لم يقرأ؟
• ماذا يحدث اذا كان الملف لا يمكن ان تكون مغلقة؟
لتناول مثل هذه القضايا ، readfile مهمة يجب ان يكون اكثر المدونه الى الانضمام اكتشاف الخطأ ، والابلاغ ، والمناوله. هنا مثال على ما وظيفة قد تبدو كمن :
Errorcodetype (readfile
تهيئة errorcode = 0 ؛
فتح ملف ؛
اذا (thefileisopen) (
تحديد طول ملف ؛
اذا (gotthefilelength) (
ان تخصيص الكثير من الذاكرة ؛
اذا (gotenoughmemory) (
قراءة الملف الى الذاكرة ؛
اذا (readfailed) (
Errorcode = -1 ؛
)
آخر) (
Errorcode = -2 ؛
)
آخر) (
Errorcode = -3 ؛
)
اغلاق ملف ؛
اذا (& & thefiledidntclose errorcode == 0) (
Errorcode = -4 ؛
آخر) (
Errorcode = errorcode و-4 ؛
)
آخر) (
Errorcode = -5 ؛
)
العودة errorcode ؛
)
هناك الكثير من اكتشاف الخطأ والابلاغ عنها ، والعودة هنا الى ان الاصل سبعة خطوط من مدونة تضيع في فوضى. والاسوأ من ذلك ، تدفق المنطقي للقانون وتم ايضا فقدت ، مما يجعل من الصعب معرفة ما اذا كان هذا القانون يقوم بالعمل الصحيح وهو : هل حقا ان يجري اغلاق الملف اذا كانت المهمة لا تخصص ما يكفي من الذاكرة؟ انه حتى اكثر صعوبة لضمان ان المدونه لا تزال تفعل الشيء الصحيح عندما كنت في تعديل طريقة بعد ثلاثة أشهر من كتابة هذا التقرير. العديد من المبرمجين حل هذه المشكلة ببساطة تجاهل iterrors أفيد عندما تحطم برامجه.
الاستثناءات يمكن ان اكتب اليكم الرئيسية تدفق شفرتك والتعامل مع الحالات الاستثناءيه في اماكن اخرى. اذا readfile استثناءات مهمة تستخدم بدلا من التقليديه دون خطأ تقنيات الإدارة ، انها ستنظر اشبه ما يلي :
(Readfile
جرب (
فتح ملف ؛
تحديد حجمه ؛
ان تخصيص الكثير من الذاكرة ؛
قراءة الملف الى الذاكرة ؛
اغلاق ملف ؛
الصيد) (fileopenfailed) (
Dosomething ؛
الصيد) (sizedeterminationfailed) (
Dosomething ؛
الصيد) (memoryallocationfailed) (
Dosomething ؛
الصيد) (readfailed) (
Dosomething ؛
الصيد) (fileclosefailed) (
Dosomething ؛
)
)
علما ان الاستثناءات لا تدخر جهدا اليكم من القيام بأعمال الكشف والابلاغ عنها ، ومعالجة الاخطاء ، لكنها تساعدك على تنظيم العمل على نحو اكثر فعالية.
الميزه 2 : المكاثره أخطاء تصل الدعوة إلى كومة
ميزة ثانية من الاستثناءات هو القدرة على نشر خطأ في الابلاغ حتى الدعوة الى كومة من الاساليب. لنفترض ان readfile الاسلوب هو الاسلوب الرابع في سلسلة من متداخل طريقة النداءات التي وجهها البرنامج الرئيسي : method1 يدعو method2 ، الذي يدعو الى method3 ، التي تدعو الى readfile أخيرا :
Method1 (
الكلمه method2 ؛
)
Method2 (
الكلمه method3 ؛
)
Method3 (
الكلمه readfile ؛
)
لنفترض أيضا ان method1 هو الطريقة الوحيدة المهتمه في الاخطاء التي قد تحدث داخل readfile. خطا الاخطار التقليديه تقنيات قوة method2 method3 ونشر مدونات خطأ عاد بها readfile تصل الدعوة إلى كومة حتى الخطأ المدونات وأخيرا توصل method1the الطريقة الوحيدة التي تهتم بها :
Method1 (
Errorcodetype خطأ ؛
خطا = الكلمه method2 ؛
اذا كان (خطأ)
Doerrorprocessing ؛
آخر
شروع ؛
)
Errorcodetype method2 (
Errorcodetype خطأ ؛
خطا = الكلمه method3 ؛
اذا كان (خطأ)
العودة الخطأ ؛
آخر
شروع ؛
)
Errorcodetype method3 (
Errorcodetype خطأ ؛
خطا = الكلمه readfile ؛
اذا كان (خطأ)
العودة الخطأ ؛
آخر
شروع ؛
)
يذكر ان وقت التشغيل جافا البيئة التفتيش الى الوراء من خلال الدعوة الى كومة من العثور على اي الاساليب التي هي مهتمة في التعامل مع استثناء معين. طريقة يمكن بطه اي استثناءات القيت في داخلها ، الامر الذي يتيح طريقه الى مدى أبعد تصل الدعوة إلى كومة الصيد. ومن هنا ، الا ان اساليب الرعايه عن اخطاء قد وان تقلق على اكتشاف الاخطاء :
Method1 (
جرب (
الكلمه method2 ؛
) الصيد (باستثناء ه) (
Doerrorprocessing ؛
)
)
Method2 رميات استثناء (
الكلمه method3 ؛
)
Method3 رميات استثناء (
الكلمه readfile ؛
)
ولكن ، وكما تبين pseudocode ، الغطس استثناء يتطلب بعض الجهد من جانب الوسيط طرق. اي التحقق من الاستثناءات التي يمكن ان يلقى بهم في اطار اسلوب يجب ان تحدد في دورتها رميات شرط.
الميزه 3 : التجميع والتفريق بين أنواع الخطأ
لأن جميع الاستثناءات التي القيت في اطار البرنامج هي الأشياء ، التجمع او تصنيف الاستثناءات هو نتيجة طبيعية للالطبقة التسلسل الهرمي. مثال على مجموعة من الطبقات ذات الصلة استثناء في جاوة منهاج هي تلك التي تم تحديدها في java.ioioexception وأحفاد. Ioexception هو الاكثر العام ويمثل اي نوع من الاخطاء التي يمكن ان تحدث عند المنفذ الاول / O. احفاد دورتها تمثل اكثر تحديدا الاخطاء. على سبيل المثال ، filenotfoundexception يعني ان الملف لا يمكن الموجودة على القرص.
طريقة الكتابة محددة يمكن ان عمال يمكنهم التعامل مع استثناء محدد جدا. فان filenotfoundexception الطبقة ليس له ذرية ، بحيث التالية المعالج يمكنه معالجة نوع واحد من الاستثناء :
الصيد (filenotfoundexception ه) (
...
)
طريقة الصيد يمكن استثناء ، استنادا الى مجموعة أو العام عن طريق تحديد اي نوع من الاستثناء 'ssuperclasses الصيد في البيان. على سبيل المثال ، الى التقاط كل الاول / س الاستثناءات ، بغض النظر عن نوع محدد ، باستثناء المعالج يحدد اي ioexception الحجه :
الصيد (ioexception ه) (
...
)
هذا المعالج سيكون قادرا على التقاط كل الاول / س الاستثناءات ، بما filenotfoundexception ، eofexception ، وهلم جرا. يمكنك العثور على تفاصيل عن ما حدث من قبل سؤال الحجه التي مرت على استثناء المعالج. على سبيل المثال ، استخدام التالي لطباعة كومة تعقب :
الصيد (ioexception ه) (
E.printstacktrace () ؛ / / الناتج يذهب الى system.err.
E.printstacktrace (system.out) ؛ / / اثر لارسال stdout.
)
حتى انك تستطيع انشاء استثناء المعالج ان يعالج اي استثناء مع المعالج هنا :
الصيد (باستثناء ه) (/ / أ (ايضا) العام باستثناء المعالج
...
)
باستثناء الطبقة القريبه من اعلى من الدرجة throwable التسلسل الهرمي. ولذلك ، فإن هذا المعالج سوف الصيد اخرى كثيرة الاستثناءات ، بالإضافة الى تلك التي المعالج يقصد الصيد. قد تريد معالجة الاستثناءات وبهذه الطريقة اذا اردت ان جميع الخاصة بك البرنامج الى القيام ، على سبيل المثال ، هو طباعة رسالة خطأ للمستخدم وثم الخروج.
وفي معظم الحالات ، ولكن أردت أن يكون استثناء عمال الى اقصى قدر ممكن من التحديد. والسبب هو ان اول شيء أ المعالج يجب القيام به هو تحديد نوع الاستثناء حدثت قبل ان يصبح من الممكن اتخاذ قرار بشأن أفضل استراتيجية الانعاش. في الواقع ، ليس من جانب صيد اخطاء محددة ، والمعالج يجب ان تستوعب اي احتمال. ان استثناء عمال عامة للغاية يمكن أن يجعل القانون اكثر عرضة للخطأ من قبل المسك ومعالجة الاستثناءات التي لم تكن متوقعة من قبل المبرمج والتي لا يقصد المعالج.
وكما لوحظ ، يمكنك انشاء مجموعات من الاستثناءات ، والاستثناءات في التعامل بشكل عام ، او يمكنك استخدام نوع محدد باستثناء التفريق الاستثناءات ومعالجة الاستثناءات في الدقيقة الموضه.
هذا هو مقال اضافها كلين العلامه التجارية
تنصل : موقعنا ليست مسؤولة عن المعلومات الواردة في هذه المادة. هذه المادة ولا يعبر باي حال عن آراء ، آراء ، والافكار او المعتقدات من المواد دليل الموظفين.
ترجمة أشعار : المادة "مزايا استثناءات في جافا لغة برمجة" وقد ترجم تستخدم مشغل داءره الترجمة. ونحن نعتذر عن اي باخلاص اخطاء الترجمة التي وقعت. شكرا للتفاهم.