logo

جافا يلقي الكلمة الرئيسية

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

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

ميزات جافا

بناء جملة رميات جافا

 return_type method_name() throws exception_class_name{ //method code } 

ما هو الاستثناء الذي يجب الإعلان عنه؟

أعوام: تم التحقق من الاستثناء فقط، لأن:

    استثناء غير محدد:تحت سيطرتنا حتى نتمكن من تصحيح التعليمات البرمجية لدينا.خطأ:خارج عن سيطرتنا. على سبيل المثال، لا يمكننا فعل أي شيء في حالة حدوث VirtualMachineError أو StackOverflowError.

الاستفادة من جافا يلقي الكلمة الرئيسية

يمكن الآن نشر الاستثناء المحدد (إعادة توجيهه في مكدس الاستدعاءات).

يوفر معلومات للمتصل بالأسلوب حول الاستثناء.

رميات جافا مثال

دعونا نرى مثال عبارة 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:لقد اكتشفنا الاستثناء، أي أننا تعاملنا مع الاستثناء باستخدام كتلة المحاولة/الالتقاط.الحالة 2:لقد أعلنا عن الاستثناء، أي الكلمة الأساسية المحددة مع الطريقة.

الحالة 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) هل يمكننا إعادة طرح الاستثناء؟

نعم، عن طريق طرح نفس الاستثناء في كتلة الصيد.