جافا معالجة الاستثناء وتطبيقه

جافا معالجة الاستثناء الرصاص

افترض أنك تريد كتابة برنامج جافا الذي يقرأ سطر من النص المدخلة من قبل المستخدم، ويعرض النص في المحطة.

الإجراءات هي كما يلي:

1 استيراد java.io. *؛

2 فئة العمومي EchoInput {

3 ساكنة العام باطلة الرئيسية (وسائط سلسلة ) {

4 System.out.println ( "أدخل النص إلى صدى:")؛

5 InputStreamReader ISR = InputStreamReader الجديد (System.in)؛

6 BufferedReader inputReader = BufferedReader الجديد (ISR)؛

7 سلسلة inputLine = inputReader.readLine ()؛

8 System.out.println ( "اقرأ:" + inputLine)؛

9}

10}

التحليل أعلاه من التعليمات البرمجية في فئة EchoInput، خط 3 يعلن الأسلوب الرئيسي، حارة 4 المطالبات للمستخدم إدخال النص، وتقدم صورة 5،6 خط للاتصال BufferedReader InputStreamReader، ويتم توصيل InputStreamReader بدوره إلى دفق الإدخال القياسي System.in ؛ خط 7 يقرأ سطر واحد من النص؛ 8، خط باستخدام تيار الإخراج القياسي System.out يظهر النص.

على السطح فوق الإجراء لا توجد مشكلة، ولكن في الواقع، والطبقة EchoInput المشاكل المحتملة تماما. لقراءة عند استدعاء الأسلوب ReadLine على خط 7 دخلت بشكل صحيح، يجب أن تكون هذه الأنواع من الافتراضات صحيحا: تحمل لوحة المفاتيح فعالة، ويمكن لوحة المفاتيح التواصل بشكل صحيح مع جهاز الكمبيوتر؛ نفترض أن بيانات لوحة المفاتيح يمكن نقلها من نظام التشغيل لآلة جافا الافتراضية، ومن جاوة ينقل الجهاز الظاهري inputReader.

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

استثناء في موضوع java.lang.Error "الرئيسي": لم تحل مشكلة تجميع:

 نوع استثناء غير معالج IOException

 في EchoInput.main (EchoInput.java:7)

كما يمكن أن يرى، والدعوة خط 7TH الأسلوب ReadLine التي يمكن ان تتعرض: إذا كان الأمر كذلك، ثم IOException لإنتاج خطأ قياسي. خطأ مترجم أقول لك أن كنت بحاجة إلى تغيير رمز لحل هذه المشكلة المحتملة. في وثائق API جدك، يمكنك أن ترى نفس المعلومات. يمكننا أن نرى الأسلوب ReadLine، كما هو مبين في الشكل.

JDK طريقة الوثائق API ReadLine للFIG 1. الطبقة BufferedReader

كما هو واضح من الشكل 1، قد تحدث الأسلوب ReadLine IOException. كيفية التعامل مع الفشل المحتملة؟ يحتاج المترجم إلى "الاستيلاء" أو "إعلان" IOException.

"القبض على (الصيد)" اعتراض خطأ يشير إلى خطأ عندما الأسلوب ReadLine، وتسجيل ومعالجة المشاكل. "إعلان (تعلن)" يشير إلى خطأ قد يؤدي IOException، وإخطار أية تعليمات برمجية يدعو هذا الأسلوب: قد يكون استثناء.

لاستثناءات الصيد، لديك لإضافة خاص "كتلة التعليمات البرمجية"، لتلقي ومعالجة IOException. ثم يقرأ البرنامج على النحو التالي:

1 استيراد java.io. *؛

2 فئة العمومي EchoInputHandle {

3 ساكنة العام باطلة الرئيسية (وسائط سلسلة ) {

4 System.out.println ( "أدخل النص إلى صدى:")؛

5 InputStreamReader ISR = InputStreamReader الجديد (System.in)؛

6 BufferedReader inputReader = BufferedReader الجديد (ISR)؛

7 المحاولة {

8 سلسلة inputLine = inputReader.readLine ()؛

9 System.out.println ( "اقرأ:" + inputLine)؛

10}

11 الصيد (غير شامل IOException) {

12 System.out.println ( "استثناء اجه:" + غير شامل)؛

13}

14}

15}

كتلة التعليمات البرمجية وأضاف يحتوي على كلمات ومحاولة الصيد (7،10،11،13 خط)، يمثل مساهمة في قراءتها. في حال نجاحها، وتعمل بشكل طبيعي. إذا قراءة خطأ، ثم قبض على المشكلة (التي تمثلها الأجسام IOException)، واتخاذ الإجراءات المناسبة. في تجسيد الحالي، يتم استخدام طريقة المعالجة في الانتاج غير طبيعي.

إذا تحضير للقبض IOException، بيان غير عادي فقط، وسيكون الأسلوب الرئيسي خصيصا قد تكون خاطئة، ولكن قد لديك تعليمات خاصة IOException. ثم يقرأ البرنامج على النحو التالي:

1 استيراد java.io. *؛

2 فئة العمومي EchoInputDeclare {

3 ساكنة العام باطلة الرئيسية (وسائط سلسلة ) يلقي IOException {

4 System.out.println ( "أدخل النص إلى صدى:")؛

5 InputStreamReader ISR = InputStreamReader الجديد (System.in)؛

6 BufferedReader inputReader = BufferedReader الجديد (ISR)؛

7 سلسلة inputLine = inputReader.readLine ()؛

8 System.out.println ( "اقرأ:" + inputLine)؛

9}

10}

من هذا المثال البسيط أعلاه، يمكننا أن نرى أن معالجة الاستثناء لا يمكن تجاهلها في تطوير جافا البرمجية.

استثناء جافا ومعالجة الاستثناء

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

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

FIG 2 هو عامة العمارة الرسائل الغرض.

2. FIG رسالة عامة مخطط

وكما يتبين من الشكل، يجب أن يكون استثناء لفئة أو الكائن في بعض تطبيقات Java التوالي. عند حدوث فشل "المرسل" سوف يولد كائن استثناء. وقد تمثل تنشأ جافا مشكلة الرمز، قد يكون من الخطأ المناسبة JVM أو الأجهزة أو نظام التشغيل الأخطاء الأساسية.

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

تتم معالجة استثناء، يجب أن يكون رسالة للمتلقي، وإلا فإنه لن تتعامل مع المشكلة الأساسية استثناء.

في المثال، وشذوذ "منتج" للقراءة خطوط BufferedReader. عندما يحدث خطأ، الكائن شيدت طريقة IOException ريدلاين. غير طبيعي "المستقبل" هو رمز نفسه. محاولة اللحاق بنية كتلة التقاط تطبيق EchoInputHandle هو المتلقي غير طبيعي، والنواتج خلل في السلسلة، تسجيل المشكلة.

جافا الدرجة استثناء التسلسل الهرمي

عندما نفهم الشذوذ ككل، يجب أن نعرف كيفية استخدام استثناءات في تطبيقات جافا التي تحتاج إلى فهم التسلسل الهرمي للفئات Java. الرقم 3 هو الهيكل الهرمي للفئات Java.

الشكل 3. جافا الطبقة التسلسل الهرمي

في جاوة، جميع الاستثناءات لها سلف مشترك قابل للظهور (قابل للظهور). قابل للظهور تحديد رمز متوفرة في أي مشاكل المشتركة الشاذة آلية نشر انتقال العدوى عن طريق تطبيقات جافا.

قابل للظهور اثنين من الفئات الفرعية الهامة: استثناء (غير طبيعي) والخطأ (خطأ)، وكلاهما فئة فرعية مهمة معالجة الاستثناء جافا، كل يحتوي على عدد كبير من الفئات الفرعية.

استثناء (غير طبيعي) هو ممكن وقابل للتنبؤ الطلب، المشاكل الذاتية. تشير معظم الاستثناءات عموما مشكلة مع معتدلة إلى خفيفة. عادة يتم إنشاء استثناء في ظل ظروف معينة، وعادة في مدونة محددة وأساليب العمل. في الصف EchoInput، عند محاولة استدعاء الأسلوب ReadLine، قد يحدث IOException.

(خطأ) يشير إلى مشاكل أكثر خطورة تشغيل التطبيق. معظم الأخطاء لا علاقة لها العملية وتنفيذ الكتاب رمز، وأن رمز المشكلة يتم تشغيل JVM (آلة جافا الافتراضية) تظهر. على سبيل المثال، عندما لم يعد مطلوبا من JVM موارد الذاكرة لمواصلة عملياتها، وسوف تظهر OutOfMemoryError.

الطبقة استثناء لديها فرعية هامة من RuntimeException. RuntimeException والفئات الفرعية يشير إلى الخطأ الناجم عن "عمليات مشتركة JVM." على سبيل المثال، عند محاولة استخدام مرجع كائن لاغية، القسمة على صفر أو مجموعة ساق، على التوالي، يتم طرح استثناء (NullPointerException، ArithmeticException) وArrayIndexOutOfBoundException وقت التشغيل.

معالجة الاستثناء جافا

في تطبيقات جافا، للتعامل مع بطريقتين استثناء: استثناء المناولة وبيان غير عادي.

معالجة الاستثناءات: المحاولة، الصيد وأخيرا

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

يوجد جافا الكلمة. عن طريق محاولة تجميع مياه الأمطار في النهاية بنية البرمجية التالية المثال.

1 استيراد java.io. *؛

2 فئة العمومي EchoInputTryCatchFinally {

3 ساكنة العام باطلة الرئيسية (وسائط سلسلة ) {

4 System.out.println ( "أدخل النص إلى صدى:")؛

5 InputStreamReader ISR = InputStreamReader الجديد (System.in)؛

6 BufferedReader inputReader = BufferedReader الجديد (ISR)؛

7 المحاولة {

8 سلسلة inputLine = inputReader.readLine ()؛

9 System.out.println ( "اقرأ:" + inputLine)؛

10}

11 الصيد (غير شامل IOException) {

12 System.out.println ( "استثناء اجه:" + غير شامل)؛

13}

14 أخيرا {

15 System.out.println ( "نهاية.")؛

16}

17}

18}

حيث:

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

محاولة تجميع مياه الأمطار أخيرا القاعدة:

  • يجب أن تضاف بعد الصيد أو أخيرا كتلة المحاولة. حاول كتلة التي يمكن أن تتخذ الصيد وكتل أخيرا، ولكن كتلة واحدة على الأقل.
  • يجب اتباع تسلسل كتلة: عند الصيد، وأخيرا استخدام يجب وضع كتلة التعليمات البرمجية على كتلة الصيد بعد كتلة المحاولة.
  • كتلة التقاط ترتبط مع الطبقة المقابلة لنوع من الاستثناء.
  • قد يكون هناك عدد وافر من كتلة حاول كتلة الصيد. إذا كان الأمر كذلك، يتم تنفيذ كتلة المطابق الأول.
  • يمكن أن تكون متداخلة بنية محاولة تجميع مياه الأمطار في نهاية المطاف.
  • في هيكل محاولة تجميع مياه الأمطار أخيرا، يمكن أن يكون-القيت رد.
  • وبالإضافة إلى هذه الحالات، سوف يتم تنفيذ مجموعه كما أخيرا إنهاء: إنهاء JVM قبل الأوان (دعوة System.exit (الباحث))؛ بطرح استثناء غير معالج في منع أخيرا، انقطاع التيار الكهربائي الكمبيوتر، والنار، أو تعرض لهجوم فيروس.
  • بيان غير عادي

    ليعلن استثناء، يجب إضافته إلى نهاية كتلة طريقة التوقيع. هنا مثال على ذلك:

    errorProneMethod الفراغ الجمهور (المدخلات كثافة العمليات) رميات java.io.IOException {

     // رمز للأسلوب، بما في ذلك واحد أو أكثر طريقة

     // المكالمات التي قد تنتج IOException

    }

    وبالتالي، سيتم تمرير الاستثناء المتصل إعلان الأسلوب، ولكن أيضا لإبلاغ المترجم: أي المتصل من الأسلوب يجب أن تتبع عملية أو مطالبة القواعد. قواعد استثناءات أعلنت هي كما يلي:

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

    فئة جافا معالجة الاستثناء

    يمكن تقسيمها إلى استثناء جاوة قد كشف شذوذ، والكشف عن شذوذ واستثناء غير الجمركية.

    يمكن الكشف عن شذوذ

    يمكن الكشف عن شذوذ من قبل التحقق مترجم، ليلقي أي وسيلة بيان استثناء، فإن المترجم فرض قواعد أو عملية الإعلان، على سبيل المثال: استثناء sqlExecption أن الكشف عن الشذوذ. عند الاتصال JDBC، لا قبض عليه، فإن المترجم لن تمر، لا تسمح للمترجم.

    غير الكشف عن تشوهات

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

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

    الطبقة RuntimeException أيضا تنتمي إلى الشذوذ غير كشف-كما قد تحدث عملية غير طبيعية في أي وقت من التشغيل العادي تثير JVM، يتم تشغيل هذه الاستثناءات عموما عن طريق عملية محددة. ومع ذلك، تحدث هذه العمليات في كثير من الأحيان في تطبيقات جافا. ولذلك، فإنها لا تقتصر الشيكات مترجم أو بيانات وقواعد المعالجة.

    استثناء مخصصة

    استثناء مخصصة لإظهار بعض من النوع الخطأ من التطبيق، لتقديم معنى جديدا لواحد أو أكثر من رموز المشكلة التي قد تحدث. أنه قد يتم عرض أوجه التشابه بين رموز الخطأ وافر من المناصب، أو يمكن أيضا التمييز بين عدد وافر من المشاكل المشابهة التي قد تحدث عند رمز خطأ لتشغيل أو تطبيق معين بمعنى إعطاء مجموعة من الخطأ. على سبيل المثال، عند تشغيل قائمة الانتظار، قد يكون هناك حالتين: عند محاولة إزالة قائمة انتظار فارغة العنصر؛ عند محاولة إضافة عنصر إلى قائمة الانتظار ممتلئ. تحتاج إلى تخصيص اثنين استثناءات للتعامل مع كلتا الحالتين.

    المبادئ والمحرمات جافا معالجة الاستثناء

    جافا مبادئ معالجة الاستثناء

  • إلى أقصى حد ممكن لمعالجة الاستثناءات
  • للتعامل مع احتمال استثناء إذا لم تسمح حالة، لا يمكن إتمام العملية في التعليمات البرمجية الخاصة بك، فإنه يعتبر بيان غير عادي. إذا تم التعامل مع استثناء لتجنب مصطنع متاحة فقط للبيانات، بل هو الأخطاء التي تعتمد على الممارسة العملية.
  • حلول محددة للمشكلات محددة
  • بعض من الفوائد التي الشذوذ يمكن أن توفر عمليات معالجة مختلفة لأنواع مختلفة من المشاكل. المفتاح لمعالجة الاستثناء الفعال هو تحديد سيناريوهات الفشل محددة، وتنمية السلوك المناسب حول هذا السيناريو محددة. من أجل الاستفادة الكاملة من قدرات التعامل مع استثناء، والحاجة إلى بناء كتلة محددة المعالج لنوع معين من المشكلة.
  • سجل غير طبيعية قد تؤثر على التطبيقات التي تعمل
  • على الأقل لاتخاذ بعض الطريقة دائمة، لتسجيل التي قد تؤثر على عملية الاستثناء التطبيق. من الناحية المثالية، بالطبع، هو حل المشاكل الأساسية الناجمة عن خلل في المقام الأول. ومع ذلك، بغض النظر عن أي نوع من عمليات المعالجة، والقضايا الرئيسية في إطار الإمكانية الكلية العامة يجب أن تسجل. على الرغم من أن هذه العملية بسيطة جدا، ولكن يمكن أن تساعدك على تتبع سبب طلب من القضايا المعقدة مع القليل جدا من الوقت.
  • الوضع الشاذ في سياق الأعمال
  • لإعلام مشكلة بالتطبيق، فمن الضروري لتحويل التطبيق إلى شكل مختلف. عندما تشير إلى شذوذ، رمز خدمة محددة هو أسهل للحفاظ على الدولة. بمعنى من المعاني، بغض النظر عن متى انتشار غير طبيعي للسياقات مختلفة (أي طبقة تقنية أخرى)، ينبغي تحويل استثناء لشكل جديد من سياق ذي معنى.
  • المحرمات جافا معالجة الاستثناء

  • عموما لا تتجاهل استثناء
  • في كتلة معالجة الاستثناء، واحدة من أكثر خطوة خطيرة هي "دون سابق إنذار" لاستثناءات التعامل معها. كما هو موضح في المثال التالي:
  • 1
  • 2
  • 3
  • 4
  • 1 محاولة {
  • 2 Class.forName ( "business.domain.Customer")؛
  • 3}
  • 4 الصيد (غير شامل ClassNotFoundException) {}
  • كثيرا ما نرى رمز لبنات مماثلة في كتلة التعليمات البرمجية. بعض الناس دائما مثل بسرعة وسهولة كتابة معالج فارغة كود كتلة الكتابة، و "مطمئنة النفس"، كما اعلن انه مستعد في "المتأخرة" رمز الاسترداد إضافة، ولكن هذا "المتأخرة" إلى "فترة حرة."
  • هذا نهج أي ضرر؟ إذا لم يكن استثناء أي تأثير سلبي على أجزاء أخرى من التطبيق، وهي ليست فكرة سيئة. ولكن الحقيقة هي في كثير من الأحيان ليس هو الحال، فإن استثناء تزعج حالة التطبيق. في هذه المرحلة، هذا الرمز هو بمثابة خداع.
  • هذه الممارسة، إذا كانت أقل تضررا، قد تظهر تطبيق السلوك الغريب. على سبيل المثال، مجموعة قيمة عداد المفقودين من قبل التطبيق، واجهة المستخدم الرسومية، أو الفشل. إذا كانت المشكلة خطيرة، قد يكون التطبيق مشكلة كبيرة، لأن نقطة الفشل ليست التسجيل الأصلي غير طبيعي، من الصعب التعامل معها، مثل NullPointerExceptions مكررة.
  • إذا اتخذت تدابير، وسجلت محاصرة استثناء، فمن المستحيل أن تواجه هذه المشكلة. في الواقع، إلا إذا تأكدت أي تأثير غير طبيعي على ما تبقى من رمز على الأقل للسجل. وعلاوة على ذلك، أبدا تجاهل المشكلة، وإلا فإن الخطر الأكبر في هذا الأخير يؤدي إلى عواقب لا يمكن التنبؤ بها.
  • لا تغطي كتلة معالجة الاستثناء
  • عملية أخرى هو معالج خطر تراكب (بطانية معالج). البنية الأساسية للقانون على النحو التالي:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1 محاولة {
  • 2 // ...
  • 3}
  • 4 الصيد (استثناء ه) {
  • 5 // ...
  • (6)}
  • استخدام تراكب استثناء معالجة كتلة واحدة من شرطين:
  • 1. القانون فقط فئة من المشاكل.
  • قد يكون هذا صحيحا، ولكن حتى مع ذلك، لا ينبغي أن تستخدم لتغطية معالجة الاستثناء، والقت القبض على نحو أكثر تحديدا أشكال الشاذة منها مفيد عيوب.
  • 2. تطبيق دائما عملية الانتعاش واحدة.
  • يكاد يكون من الخطأ تماما. تقريبا أي حجم واحد يناسب الجميع النهج يمكن، يمكننا التعامل مع أي مشاكل قد تنشأ.
  • وتحدث هذه المدونة حالة مكتوبة قيد التحليل. طالما استمرت الطرق لضبط استثناء المتوقع يتم طرح، كل شيء على ما يرام. ومع ذلك، إذا كنت رمي الاستثناءات غير متوقعة، لا يمكنك رؤية العمل لاتخاذ. عندما المعالج تراكب لأداء رتابة مهام الطبقة استثناء جديدة، يمكنك ان ترى فقط بشكل غير مباشر التعامل مع نتائج غير متوقعة. إذا تم طباعة رمز أو تسجيل البيانات، لا نتائج ملموسة.
  • والأسوأ من ذلك، عندما يتغير الرمز، سوف يستمر المعالج تراكب للعمل على أي نوع استثناء جديد، وجميع أنواع تجهيز بنفس الطريقة.
  • عموما لا تضع استثناء محدد في الاستثناء أكثر عمومية
  • باستثناء محددة لاستثناء أعم عندما نهج خاطئ. بشكل عام، فإنه سيتم إلغاء سياق استثناء القيت عندما ولدت في البداية عندما انتشار غير طبيعي لمواقع أخرى في النظام، وسوف يكون من الصعب التعامل معها. انظر المثال أدناه:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1 محاولة {
  • كود 2 // خطأ عرضة لل
  • 3}
  • 4 الصيد (IOException ه) {
  • 5 سلسلة جي اس = "إذا كنت ديدن 'ر لديك مشكلة من قبل، أن تفعل الآن!".
  • 6 رمي استثناء جديد (جي اس)؛
  • (7)}
  • لأنه لا يوجد معلومات حول استثناء الأصلي، وبالتالي فإن كتلة المعالج لا يمكن تحديد سبب المشكلة ولا يعرفون كيفية تصحيح المشكلة.
  • ويمكن تجنب لا معالجة الاستثناءات
  • بالنسبة لبعض أنواع من الاستثناءات، في الواقع، لم يكن لديك للتعامل معها. تنتمي الشاذ لهذه الفئة من التشغيل العادي. عند معالجة مؤشر خالية أو بيانات فهرسة المشاكل، دون اللجوء إلى معالجة الاستثناء.
  • أمثلة تطبيق جافا معالجة الاستثناء

    عند تحديد البنك، يحتاج معالجة الاستثناء الذي يتعين القيام به إذا كان التوازن هو أكبر من عدد من الانسحابات.

    تحديد insufficientFundsException استثناء الطبقة. السحب (سحب) قد تكون عملية استثناء، هذا التوازن هو أقل من المبلغ اتخاذها.

    معالجة الاستثناءات عند استدعاء انسحاب، وبالتالي فإن طريقة السحب لرمي استثناء، وارتفاع مستوى استدعاءات الأسلوب.

    الطبقة استثناء:

    الطبقة InsufficientFundsExceptionextends استثناء {

     excepbank البنك الخاص؛ // هدف البنك

     excepAmount المزدوج الخاص؛ // لأخذ المال

     InsufficientFundsException (با البنك، dAmount مزدوجة)

     {Excepbank = با.

     excepAmount = dAmount.

     }

     جمهور سلسلة excepMessage () {

     سلسلة شارع = "التوازن هو" + excepbank.balance

     + "\ N" + "وكان انسحاب" + excepAmount.

     العودة شارع.

     }

    } // الطبقة استثناء

    البنك:

    البنك الطبقة {

     توازن مزدوج؛ // عدد من الودائع

     بنك (توازن مزدوجة) {this.balance = التوازن؛}

     الإيداع باطلة العامة (dAmount مزدوجة) {

     إذا (dAmount > 0.0) ميزان + = dAmount.

     }

     سحب باطلة العامة (dAmount مزدوجة)

     يلقي InsufficientFundsException {

     إذا (التوازن < dAmount) رمي جديدة

     InsufficientFundsException (هذا، dAmount)؛

     ميزان = ميزان dAmount.

     }

     showBalance الفراغ الجمهور () {

     System.out.println ( "إن التوازن هو" + (كثافة) التوازن)؛

     }

    }

    الواجهة الأمامية للالدعوة:

    الطبقة العامة ExceptionDemo {

     ساكنة العام باطلة الرئيسية (وسائط سلسلة ) {

     محاولة {

     با البنك = البنك الجديد (50)؛

     ba.withdrawal (100)؛

     System.out.println ( "سحب ناجحة!")؛

     } صيد (InsufficientFundsException ه) {

     System.out.println (e.toString ())؛

     System.out.println (e.excepMessage ())؛

     }

     }

    }

    ملخص

    جافا معالجة الاستثناء مهم جدا لاستخدام اللغة وبرامج تطوير جافا في جانب واحد من تطوير السيناريو الاختبار. واستثناء التعامل التركيز سيكون على تطوير التعليمات البرمجية أكثر قوة، أكثر استقرارا. وتصف هذه الورقة نظام من المبادئ وطرق معالجة الاستثناء جافا. لمساعدة القارئ على فهم أكثر وضوحا جافا آلية معالجة الاستثناء، واستخدام أكثر مرونة عندما تتطور التعليمات البرمجية.

    أصبح TCL شريك عالمي لكرة السلة كرة السلة الراعي سلام!

    الروبوت الهاتف وظيفة تسجيل المكالمات ليتم إلغاء! الروبوت 9.0 سيتم حظر رسميا

    همية العليا يفعلون الأشياء؟ ! السنة الجديدة على وشك اتخاذ اجتاحت مشتركة الجمال!

    معرفة متقدمة جافا التسلسل

    لى يونيو 1000000000 مقامرة خسر، ولكن يعتمد الفوز على دونغ مينغ تشو

    سامسونج Note9 بيع قاتمة، MEIZU 16 الساخن، لماذا سامسونج بارد في السوق الصينية؟

    DC الأسرة أقل إيجابية: الربع الثالث بعد مرور ثماني سنوات، وقد حان أخيرا!

    جيا يويتينغ مقر بيع FF في لوس انجليس، حصة قطرات تدمير التأديبية الدراجات السلوك

    2019 أفلام الأعجوبة القادمة، TV قائمة يبين!

    أعجوبة العدائين سريع، البطل القديم من الحرب العالمية الثانية - الرياح مان

    فازت الهند أربعة أرباع متتالية من السوق لأول مرة! لماذا الهنود حتى في الهاتف الحب الدخن؟

    انتهى الطغيان سوبرمان، تحولت الرمال سيمان لصالح المخلص!