يمكن لأي رمز Java إلقاء استثناءات ، مثل: الكود الذي كتبه بنفسك ، رمز من حزمة بيئة تطوير Java ، أو نظام Runtime Java. بغض النظر عن من هو ، يمكنك رمي استثناء من خلال بيان رمي جافا. يجب استخدام أي استثناء تم إلقاؤه من الطريقة مع جملة TROWWS.
1. رمي رمي الاستثناء
إذا كانت الطريقة قد يكون لها استثناء ولكن ليس لديها القدرة على التعامل مع مثل هذا الاستثناء ، فيمكنك استخدام جملة THROWS لإعلان الاستثناء الذي تم إلقاؤه في إعلان الطريقة. على سبيل المثال ، قد تفشل السيارة عند الجري ، ولا يمكن للسيارة نفسها التعامل مع هذا الفشل ، لذلك دع السائق يتعامل معه.
يتم استخدام عبارة TROMES لإعلان نوع الاستثناء الذي يتم إلقاؤه عند تحديد الطريقة. يمكن تقسيم استثناءات متعددة باستخدام الفواصل. تنسيق بناء الجملة لبيان الرمي هو:
MethodName رمي الاستثناء 1 ، استثناء 2 ، .. ، استثناء
{
}
رمي بعد اسم الطريقة الاستثناء 1 ، الاستثناء 2 ، ... ، الاستثناء هو قائمة الاستثناءات التي يجب إلقاؤها. عندما ترمي الطريقة قائمة استثناءات من الاستثناءات ، لن تتعامل الطريقة مع استثناءات من هذه الأنواع وأنواع الفئات الفرعية الخاصة بها ، ولكن سيتم إلقاؤها على الطريقة التي تستدعي الطريقة وسيتم معالجتها بها. على سبيل المثال:
استيراد java.lang.exception ؛ (string [] args) {// main method try {// try statedles stisply information information pop () ؛ استثناء إلقاء ") ؛ // معلومات استثناء الإخراج}}}
بعد إلقاء الاستثناء على المتصل باستخدام الكلمة الرئيسية رميات ، إذا كان المتصل لا يريد التعامل مع الاستثناء ، فيمكنك الاستمرار في رميه ، ولكن في النهاية يجب أن يكون هناك متصل يمكنه التعامل مع الاستثناء.
لا تتعامل طريقة POP مع الاستثناء NegatiVearraysizeException ، ولكن يتم التعامل معها بواسطة الوظيفة الرئيسية.
قاعدة رميات لرمي الاستثناءات:
1) إذا كان استثناءً غير مرغوب فيه ، أي خطأ ، RundimeException أو فئاتها الفرعية ، يمكنك الإعلان عن استثناء أن يتم إلقاؤه دون استخدام الكلمة الرئيسية رميات ، وسيظل المجموعة يمر بسلاسة ، ولكن سيتم تشغيله من قبل النظام أثناء وقت التشغيل.
2) يجب الإعلان عن أي استثناءات محددة يمكن إلقاؤها بواسطة الطريقة. هذا هو ، إذا كانت الطريقة قد يكون لها استثناء يمكن فحصها ، فسيتم إما أن يتم اكتشافها ببيان تجريب أو إعلان بفقرة رمي ، وإلا فإنه سيؤدي إلى خطأ في الترجمة.
3) فقط عند إلقاء استثناء ، يجب أن يتعامل المتصل للطريقة أو إعادة تقديمه إلى الاستثناء. عندما يكون المتصل الطريقة غير قادر على التعامل مع الاستثناء ، يجب أن يستمر في رميه بدلاً من ابتلاعه بالكامل.
4) يجب أن تتبع طريقة الاتصال أي قواعد معالجة وإعلان استثناء. إذا تم الكتابة فوق الطريقة ، فلا يمكن الإعلان عن استثناءات مختلفة عن الطريقة المكتوبة. يجب أن يكون أي استثناء يُعلن أنه فئة مشابهة أو فرعية من الاستثناء المعلنة من خلال طريقة تجاوزها.
على سبيل المثال:
أساس تحديد أن الاستثناء قد يحدث في طريقة ما يلي:
1) هناك بيان رمي في الطريقة. على سبيل المثال ، تحتوي كتلة رمز الصيد على طريقة Method7 () أعلاه على بيان رمي.
2) تسمى الطرق الأخرى ، والطرق الأخرى تستخدم جملة رميات لإعلان بعض الاستثناءات لرميها. على سبيل المثال ، تستدعي طريقة Method3 () طريقة Method1 () ، وتعلن الطريقة Method1 () أنه يتم إلقاء ioException ، لذلك قد يحدث iOexception في طريقة Method3 ().
2. استخدم رمي لرمي الاستثناء
يظهر رمي دائمًا في جسم الوظيفة ويستخدم لإلقاء استثناء من النوع القابل للرمي. سينتهي البرنامج مباشرة بعد بيان الرمي ، والبيان بعده لا يمكن تنفيذه ، ثم في جميع كتل المحاولة التي تحتوي عليها (ربما في وظيفة الاتصال على المستوى العلوي) ابحث عن كتل المحاولة التي تحتوي على شرط الصيد الذي يطابقها من من الداخل.
نحن نعلم أن الاستثناءات هي كائنات مثيل لفئة الاستثناء ، ويمكننا إنشاء كائنات مثيل لفئة الاستثناء ليتم إلقاؤها من خلال بيان الرمي. تنسيق بناء الجملة لهذا البيان هو:
رمي اسم استثناء جديد.
على سبيل المثال ، رمي كائن استثناء من فئة IOException:
رمي ioexception جديد.
تجدر الإشارة إلى أن يلقي فقط كائنات المثيلات التي يمكن أن ترمي فئات قابلة للرمي أو فئات فرعية. العملية التالية غير صحيحة:
رمي سلسلة جديدة ("استثناء") ؛
هذا لأن السلسلة ليست فئة فرعية من فئة الرمي.
إذا تم طرح استثناء فحص ، فيجب عليك أيضًا إعلان نوع الاستثناء الذي قد يرميه الطريقة في رأس الطريقة. يجب على المتصل في هذه الطريقة أيضًا التحقق من التعامل مع الاستثناء الذي تم إلقاؤه.
إذا كانت جميع الأساليب ترمي طبقة الاستثناء المكتسبة حسب الطبقة ، فسيقوم JVM بمعالجةها في النهاية ، كما أن المعالجة بسيطة للغاية ، وهي طباعة معلومات الاستثناء والمعلومات. إذا تم طرح خطأ أو RunTimeException ، فإن المتصل بالطريقة لديه خيار التعامل مع الاستثناء.
اختبار الحزمة ؛ 0 رمي MyException ("المقسوم لا يمكن أن يكون رقمًا سالبًا") ؛ ؛ .out.println (e. getMessage ()) ؛ catch (باستثناء e) {// التعامل مع stisples system.out.println ("استثناء آخر حدث في البرنامج") ؛ رسالة السلسلة ؛