في Java ، جميع الاستثناءات لها سلف مشترك ، يمكن رميه (قابلة للرمي). يحدد رمي القاسم المشترك لأي مشاكل يمكن أن تنتقل من خلال تطبيقات Java في الكود من خلال آليات انتشار الاستثناء.
Rishable له فئات فرعية مهمة: الاستثناء والخطأ. كلاهما فئات فرعية مهمة لمعالجة استثناءات Java ، ويحتوي كل منهما على عدد كبير من الفئات الفرعية.
①.Exception هو مشكلة محتملة يمكن التنبؤ بها وقابلة للاسترداد في التطبيق. بشكل عام ، تشير معظم التشوهات إلى مشاكل معتدلة إلى خفيفة. يتم إنشاء الاستثناءات عمومًا في بيئات محددة وعادة ما تحدث في طرق وعمليات محددة للرمز. في فئة Echoinput ، قد يحدث IoException عند محاولة استدعاء طريقة القراءة.
فئة الاستثناء لديها فئة فرعية مهمة ، RunTimeException. تمثل فئة RunTimeException وفئاته الفرعية خطأًا أثاره "عمليات JVM المشتركة". على سبيل المثال ، إذا حاولت استخدام مرجع كائن فارغ ، أو مقسوم أو صفر خارج الحدود ، واستثناء وقت التشغيل (NullPointerException ، ArithMeticexception) و ArrayIndExoutofBoundException يتم رفعها على التوالي.
②.error يشير إلى مشكلة خطيرة في تشغيل التطبيق. لا ترتبط معظم الأخطاء بالإجراءات التي يقوم بها كاتب الكود ، ولكنها تمثل مشاكل مع JVM (الجهاز الظاهري Java) عند تشغيل الرمز. على سبيل المثال ، عندما لم يعد JVM لديه موارد الذاكرة اللازمة لمواصلة العملية ، ستظهر OutofMemoryError.
الانقسام بين التحقق من الاستثناءات وعدم التحقق من الاستثناءات
تنقسم الاستثناءات في Java إلى فئتين:
1. استثناء فحص (استثناء غير محدد)
2. استثناء محدد (استثناء وقت التشغيل)
استثناء وقت التشغيل
فئة RunTimeException هي فئة فرعية لفئة الاستثناء. يطلق عليه استثناء وقت التشغيل. سيتم مورث جميع استثناءات وقت التشغيل في Java بشكل مباشر أو غير مباشر من فئة RunTimeException.
أي استثناءات في Java ترث من الاستثناء ولكن ليس من RunTimeException هي استثناءات غير محددة.
يمكن أن تتبع المحاولة مصيد متعددة ، ولكن بغض النظر عن عدد كتلة الصيد ، سيتم تنفيذ كتلة الصيد على الأكثر.
بالنسبة للاستثناءات غير المحددة ، يجب معالجتها ، وإلا لا يمكن تجميعها.
هناك طريقتان للتعامل معها:
1. استخدم Try..Catch..finally لالتقاط ؛
2. اكتب نوع استثناء من رميات بعد إعلان الطريقة الذي يولد الاستثناء ، مثل استثناء رمي ، رمي الاستثناء إلى الطبقة الخارجية.
لاستثناءات وقت التشغيل ، يمكن معالجتها أم لا. يوصى بعدم التعامل مع استثناءات وقت التشغيل.
الامتداد: الفرق بين الخطأ والاستثناء (خطأ مقابل استثناء)
1) .java.lang.error: فئة فرعية من رمي ، تستخدم لتمييز الأخطاء الحرجة. يجب ألا يذهب تطبيق معقول لمحاولة/اصطياد الأخطاء. معظم الأخطاء غير طبيعية ولا ينبغي أن تحدث على الإطلاق.
java.lang.exception: فئة فرعية من رمي ، تستخدم للإشارة إلى برنامج معقول للقبض عليه. أي أنه مجرد شرط تشغيل للبرنامج ، وليس خطأً خطيرًا ، ويتم تشجيع برامج المستخدم على التقاطه.
2). الخطأ و RunTimeException والفواصل الفرعية الخاصة بهم هي استثناءات غير مرتاحات ، في حين يتم فحص جميع فئات الاستثناءات الأخرى.
استثناءات محددة: عادة ما يتم إلقاؤها من برنامج قابل للاسترداد ، وهو أفضل قدرة على التعافي من مثل هذه الاستثناءات باستخدام البرنامج. على سبيل المثال ، FileNotfoundException ، ParseException ، إلخ. يحدث الاستثناء المحدد في مرحلة التجميع ، ويجب استخدام Try ... catch (أو رميات) أو لن يتم تمرير التجميع.
استثناءات غير مخصصة: عادة ما يكون استثناء لا ينبغي أن يحدث إذا كان كل شيء طبيعيًا ، لكنه يحدث. يحدث ذلك أثناء وقت التشغيل ولديه عدم اليقين ، ويسبب بشكل رئيسي مشاكل منطقية في البرنامج. على سبيل المثال ، ArrayIndExoutofBoundException ، ClassCastException ، إلخ من منظور اللغة نفسها ، يجب ألا تستخدم البرامج استثناءات مثل Catch. على الرغم من أنه يمكنهم التقاط والتعافي من استثناءات مثل RunTimeException ، إلا أن المبرمجين الطرفيين لا يتم تشجيعهم على القيام بذلك لأنه لا توجد حاجة للقيام بذلك. نظرًا لأن هذا النوع من الأخطاء هو خطأ نفسه ويجب إصلاحه ، يجب إيقاف البرنامج فورًا عند حدوث هذه الأخطاء. لذلك ، في مواجهة الأخطاء والاستثناءات التي لم يتم التحقق منها ، يجب إنهاء البرنامج تلقائيًا. يجب ألا يقوم المبرمجون بأشياء مثل Try/Catch ، ولكن يجب أن يكتشفوا السبب وتعديل منطق الكود.
RunTimeException: يتضمن نظام RunTimeException تحويل نوع خاطئ ، والوصول خارج الحدود ، ومحاولات الوصول إلى المؤشرات الفارغة ، وما إلى ذلك.
مبدأ التعامل مع RunTimeException هو: في حالة حدوث RunTimeException ، يجب أن يكون خطأ المبرمج. على سبيل المثال ، يمكن تجنب استثناءات الوصول خارج الحدود عن طريق التحقق من مشتركات الصفيف وحدود المصفوفة. الاستثناءات الأخرى التي تم فحصها (IOException ، وما إلى ذلك) هي أخطاء خارجية بشكل عام ، مثل محاولة قراءة البيانات من نهاية الملف ، وما إلى ذلك. هذا ليس خطأ في البرنامج نفسه ، ولكن خطأ خارجي يحدث في بيئة التطبيق.
المقالة أعلاه Java_Exception Class (مقدمة للفرق بين الأخطاء والاستثناءات) هي كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.