ال جافا يلقي الكلمة الرئيسية يستخدم للإعلان عن استثناء. يعطي معلومات للمبرمج أنه قد يحدث استثناء. لذلك، من الأفضل للمبرمج توفير كود معالجة الاستثناءات حتى يمكن الحفاظ على التدفق الطبيعي للبرنامج.
يتم استخدام معالجة الاستثناءات بشكل أساسي للتعامل مع الاستثناءات المحددة. إذا حدث أي استثناء لم يتم التحقق منه مثل NullPointerException، فسيكون خطأ المبرمجين هو عدم التحقق من الكود قبل استخدامه.
ميزات جافا
بناء جملة رميات جافا
return_type method_name() throws exception_class_name{ //method code }
ما هو الاستثناء الذي يجب الإعلان عنه؟
أعوام: تم التحقق من الاستثناء فقط، لأن:
الاستفادة من جافا يلقي الكلمة الرئيسية
يمكن الآن نشر الاستثناء المحدد (إعادة توجيهه في مكدس الاستدعاءات).
يوفر معلومات للمتصل بالأسلوب حول الاستثناء.
رميات جافا مثال
دعونا نرى مثال عبارة Java throws التي تصف أنه يمكن نشر الاستثناءات المحددة بواسطة الكلمة الأساسية throws.
Testthrows1.java
import java.io.IOException; class Testthrows1{ void m()throws IOException{ throw new IOException('device error');//checked exception } void n()throws IOException{ m(); } void p(){ try{ n(); }catch(Exception e){System.out.println('exception handled');} } public static void main(String args[]){ Testthrows1 obj=new Testthrows1(); obj.p(); System.out.println('normal flow...'); } }اختبره الآن
انتاج:
exception handled normal flow...
القاعدة: إذا كنا نستدعي طريقة تعلن عن استثناء، فيجب علينا إما اكتشاف الاستثناء أو الإعلان عنه.
هناك حالتان:
الحالة 1: التعامل مع الاستثناء باستخدام كتلة محاولة الالتقاط
في حالة تعاملنا مع الاستثناء، سيتم تنفيذ الكود بشكل جيد سواء حدث الاستثناء أثناء البرنامج أم لا.
جافا متغير متغير
Testthrows2.java
import java.io.*; class M{ void method()throws IOException{ throw new IOException('device error'); } } public class Testthrows2{ public static void main(String args[]){ try{ M m=new M(); m.method(); }catch(Exception e){System.out.println('exception handled');} System.out.println('normal flow...'); } }اختبره الآن
انتاج:
exception handled normal flow...
الحالة 2: إعلان الاستثناء
- في حالة إعلان الاستثناء، إذا لم يحدث الاستثناء، فسيتم تنفيذ الكود بشكل جيد.
- في حالة إعلان الاستثناء وحدث الاستثناء، فسيتم طرحه في وقت التشغيل بسبب رميات لا يعالج الاستثناء.
دعونا نرى أمثلة لكلا السيناريو.
أ) إذا لم يحدث الاستثناء
Testthrows3.java
import java.io.*; class M{ void method()throws IOException{ System.out.println('device operation performed'); } } class Testthrows3{ public static void main(String args[])throws IOException{//declare exception M m=new M(); m.method(); System.out.println('normal flow...'); } }اختبره الآن
انتاج:
فئة مقابل كائن جافا
device operation performed normal flow...
ب) في حالة حدوث استثناء
Testthrows4.java
import java.io.*; class M{ void method()throws IOException{ throw new IOException('device error'); } } class Testthrows4{ public static void main(String args[])throws IOException{//declare exception M m=new M(); m.method(); System.out.println('normal flow...'); } }اختبره الآن
انتاج:
الفرق بين الرمي والرمي
انقر لي للحصول على التفاصيلQue) هل يمكننا إعادة طرح الاستثناء؟
نعم، عن طريق طرح نفس الاستثناء في كتلة الصيد.