logo

كتلة محاولة الالتقاط في Java

جافا حاول الحظر

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

إذا حدث استثناء في عبارة معينة في كتلة المحاولة، فلن يتم تنفيذ بقية رمز الكتلة. لذا، يوصى بعدم الاحتفاظ بالكود في كتلة المحاولة التي لن تؤدي إلى استثناء.

يجب أن يتبع كتلة محاولة Java إما التقاط أو حظر أخيرًا.

بناء جملة جافا محاولة الالتقاط

 try{ //code that may throw an exception }catch(Exception_class_Name ref){} 

بناء جملة كتلة المحاولة أخيرًا

 try{ //code that may throw an exception }finally{} 

كتلة التقاط جافا

يتم استخدام كتلة التقاط Java للتعامل مع الاستثناء من خلال الإعلان عن نوع الاستثناء داخل المعلمة. يجب أن يكون الاستثناء المعلن هو استثناء الفئة الأصل (أي الاستثناء) أو نوع الاستثناء الذي تم إنشاؤه. ومع ذلك، فإن النهج الجيد هو الإعلان عن نوع الاستثناء الذي تم إنشاؤه.

سلسلة جافا التسلسلية

يجب استخدام كتلة الالتقاط بعد كتلة المحاولة فقط. يمكنك استخدام كتلة التقاط متعددة مع كتلة محاولة واحدة.

العمل الداخلي لكتلة محاولة الالتقاط في Java

كتلة محاولة الالتقاط في Java

يتحقق JVM أولاً من معالجة الاستثناء أم لا. إذا لم تتم معالجة الاستثناء، يوفر JVM معالج الاستثناء الافتراضي الذي يقوم بالمهام التالية:

  • يطبع وصف الاستثناء.
  • طباعة تتبع المكدس (التسلسل الهرمي للطرق التي حدث فيها الاستثناء).
  • يتسبب في إنهاء البرنامج.

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

مشكلة دون معالجة استثناء

دعونا نحاول فهم المشكلة إذا لم نستخدم كتلة محاولة الالتقاط.

مثال 1

TryCatchExample1.java

 public class TryCatchExample1 { public static void main(String[] args) { int data=50/0; //may throw exception System.out.println('rest of the code'); } } 
اختبره الآن

انتاج:

 Exception in thread 'main' java.lang.ArithmeticException: / by zero 

كما هو موضح في المثال أعلاه، فإن بقية التعليمات البرمجية لم يتم تنفيذه (في مثل هذه الحالة، بقية التعليمات البرمجية البيان غير مطبوع).

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

الحل عن طريق معالجة الاستثناء

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

مثال 2

TryCatchExample2.java

 public class TryCatchExample2 { public static void main(String[] args) { try { int data=50/0; //may throw exception } //handling the exception catch(ArithmeticException e) { System.out.println(e); } System.out.println('rest of the code'); } } 
اختبره الآن

انتاج:

 java.lang.ArithmeticException: / by zero rest of the code 

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

مثال 3

في هذا المثال، احتفظنا أيضًا بالكود في كتلة المحاولة التي لن تؤدي إلى استثناء.

TryCatchExample3.java

 public class TryCatchExample3 { public static void main(String[] args) { try { int data=50/0; //may throw exception // if exception occurs, the remaining statement will not exceute System.out.println('rest of the code'); } // handling the exception catch(ArithmeticException e) { System.out.println(e); } } } 
اختبره الآن

انتاج:

 java.lang.ArithmeticException: / by zero 

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

مثال 4

هنا، نتعامل مع الاستثناء باستخدام استثناء الفئة الأصل.

TryCatchExample4.java

 public class TryCatchExample4 { public static void main(String[] args) { try { int data=50/0; //may throw exception } // handling the exception by using Exception class catch(Exception e) { System.out.println(e); } System.out.println('rest of the code'); } } 
اختبره الآن

انتاج:

طباعة جافا سكريبت
 java.lang.ArithmeticException: / by zero rest of the code 

مثال 5

دعونا نرى مثالاً لطباعة رسالة مخصصة عند الاستثناء.

TryCatchExample5.java

 public class TryCatchExample5 { public static void main(String[] args) { try { int data=50/0; //may throw exception } // handling the exception catch(Exception e) { // displaying the custom message System.out.println('Can't divided by zero'); } } } 
اختبره الآن

انتاج:

 Can't divided by zero 

مثال 6

دعونا نرى مثالاً لحل الاستثناء في كتلة الالتقاط.

TryCatchExample6.java

 public class TryCatchExample6 { public static void main(String[] args) { int i=50; int j=0; int data; try { data=i/j; //may throw exception } // handling the exception catch(Exception e) { // resolving the exception in catch block System.out.println(i/(j+2)); } } } 
اختبره الآن

انتاج:

ر وما يليها
 25 

مثال 7

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

TryCatchExample7.java

 public class TryCatchExample7 { public static void main(String[] args) { try { int data1=50/0; //may throw exception } // handling the exception catch(Exception e) { // generating the exception in catch block int data2=50/0; //may throw exception } System.out.println('rest of the code'); } } 
اختبره الآن

انتاج:

 Exception in thread 'main' java.lang.ArithmeticException: / by zero 

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

مثال 8

في هذا المثال، نتعامل مع الاستثناء الذي تم إنشاؤه (الاستثناء الحسابي) بنوع مختلف من فئة الاستثناء (ArrayIndexOutOfBoundsException).

TryCatchExample8.java

 public class TryCatchExample8 { public static void main(String[] args) { try { int data=50/0; //may throw exception } // try to handle the ArithmeticException using ArrayIndexOutOfBoundsException catch(ArrayIndexOutOfBoundsException e) { System.out.println(e); } System.out.println('rest of the code'); } } 
اختبره الآن

انتاج:

 Exception in thread 'main' java.lang.ArithmeticException: / by zero 

مثال 9

دعونا نرى مثالاً للتعامل مع استثناء آخر لم يتم التحقق منه.

TryCatchExample9.java

 public class TryCatchExample9 { public static void main(String[] args) { try { int arr[]= {1,3,5,7}; System.out.println(arr[10]); //may throw exception } // handling the array exception catch(ArrayIndexOutOfBoundsException e) { System.out.println(e); } System.out.println('rest of the code'); } } 
اختبره الآن

انتاج:

 java.lang.ArrayIndexOutOfBoundsException: 10 rest of the code 

مثال 10

دعونا نرى مثالاً للتعامل مع الاستثناء المحدد.

TryCatchExample10.java

 import java.io.FileNotFoundException; import java.io.PrintWriter; public class TryCatchExample10 { public static void main(String[] args) { PrintWriter pw; try { pw = new PrintWriter('jtp.txt'); //may throw exception pw.println('saved'); } // providing the checked exception handler catch (FileNotFoundException e) { System.out.println(e); } System.out.println('File saved successfully'); } } 
اختبره الآن

انتاج:

 File saved successfully