CodeGym /جاوا بلاگ /Random-SD /جاوا ڪوشش ڪريو - پڪڙيو
John Squirrels
سطح
San Francisco

جاوا ڪوشش ڪريو - پڪڙيو

گروپ ۾ شايع ٿيل
پروگرام جي عمل دوران نقص ٿي سگھي ٿو. اهو هر پروگرامر لاءِ هڪ عام مسئلو آهي، هڪ ابتدائي کان حقيقي پرو تائين. نه سڀئي غلطيون ڊولپر جي غلطي جي ذريعي پيدا ٿين ٿيون. انهن مان ڪجهه اڳڪٿي ڪرڻ ڏکيو آهي، ۽ ڪڏهن ڪڏهن اهو ممڪن ناهي. مثال طور، پروگرام ڊائون لوڊ ڪرڻ دوران، نيٽ ورڪ ڪنيڪشن اوچتو ختم ٿي سگھي ٿو يا بجلي نڪري سگھي ٿي. اهڙين حالتن کي استثنا سڏيو ويندو آهي. ڪوشش ڪريو ۽ پڪڙيو تعمير جا حصا آھن استثن کي سنڀالڻ لاءِ استعمال ٿيل آھن.

جاوا ڪوشش ڪريو ۽ بلاڪ کي پڪڙيو

جڏهن هڪ غلطي ٿئي ٿي، جاوا عام طور تي روڪي ٿو ۽ هڪ غلطي پيغام ٺاهي ٿو. اهو عمل "جاوا اڇلائي هڪ استثنا" سڏيو ويندو آهي. جاوا استثنا کي سنڀالڻ لاءِ خاص سهولتون فراهم ڪري ٿو. انهن مان هڪ آهي ڪوشش... پڪڙي... آخرڪار تعمير. ھتي آھي نحو جي ڪوشش بلاڪ، ڪيچ بلاڪ ۽ آخر ۾ بلاڪ.
//try block
try {
  // Block of code to try
}
//try catch
catch(Exception e) {
  // Block of code to handle errors
}
finally {
 // Optional block of code
          }
جڏهن ڪوشش بلاڪ ۾ هڪ استثنا ٿئي ٿي، ڪنٽرول پاس ڪري ٿو ڪيچ بلاڪ ڏانهن، جيڪو استثنا کي سنڀالي سگهي ٿو. جيڪڏهن ڪو به اهڙو بلاڪ نه مليو آهي، هڪ اڻڄاتل استثنا پيغام صارف ڏانهن ڏيکاري ٿو ۽ پروگرام جي وڌيڪ عمل کي روڪيو ويو آهي. اهو اهڙي ايمرجنسي اسٽاپ کي روڪڻ لاءِ آهي ته توهان کي استعمال ڪرڻ جي ضرورت آهي ڪوشش..ڪچ بلاڪ. جاوا ڪوشش - پڪڙي - 1

ڪوشش جي باري ۾ مختصر طور تي، پڪڙي، آخرڪار، اڇلائي لفظن

جاوا ۾ استثنا سنڀالڻ پروگرام ۾ هيٺين لفظن جي استعمال تي ٻڌل آهي:
  • ڪوشش ڪريو - ڪوڊ جي ھڪڙي بلاڪ کي بيان ڪري ٿو جنھن ۾ ھڪڙو استثنا ٿي سگھي ٿو.
  • ڪيچ - ڪوڊ جي بلاڪ کي بيان ڪري ٿو جنهن ۾ استثنا سنڀاليو ويو آهي؛
  • آخر ۾ - ڪوڊ جو هڪ بلاڪ بيان ڪري ٿو جيڪو اختياري آهي، پر جيڪڏهن موجود هجي، ته پوءِ به ان تي عمل ڪيو ويندو، بغير ڪوشش جي بلاڪ جي نتيجن جي.
اهي لفظ استعمال ڪيا ويندا آهن خاص پروسيسنگ ٺاھڻ لاءِ پروگرام ڪوڊ ۾: ڪوشش ڪريو پڪڙي، ۽ ڪوشش ڪريو آخر ۾ }.
  • اڇلائڻ - هڪ استثنا بلند ڪرڻ لاء استعمال ڪيو؛
  • اڇلائي - استعمال ٿيل طريقي جي نشانين ۾ ڊيڄاري ٿو ته ھڪڙو طريقو ھڪڙو استثنا اڇلائي سگھي ٿو.

ڪوشش-پڪڙ جي تعمير جو آسان مثال

اچو ته اسان وٽ هڪ پروگرام آهي ڪجهه صف سان.
public class TryTest {
   public static void main(String[] args) {
       int[] myArray = new int[5];
       myArray[7] = 8;
       System.out.println(myArray[7]);
   }
}
جيئن ته اسان ڪوشش ڪري رهيا آهيون هڪ صف جي عنصر کي غير موجود انڊيڪس سان، پروگرام هڪ غلطي سان نڪرندو:
سلسلي ۾ استثنا "main" java.lang.ArrayIndexOutOfBoundsException: Index 7 جي حدن کان ٻاهر 5 جي لاءِ ڏينهن تي.TryTest.main(TryTest.java:6) عمل ختم ٿيو ايگزٽ ڪوڊ 1 سان
اچو ته ھن پروگرام کي تبديل ڪريون ۽ ھن استثنا کي ھڪڙي ڪوشش سان سنڀاليون. پهرين اچي ٿو ڪوشش بلاڪ، بعد ۾ - پڪڙي بلاڪ.
//try catch example
public class TryTest {
   public static void main(String[] args) {
       try {
           int[] myArray = new int[5];
           myArray[7] = 8;
           System.out.println(myArray[7]);
       } catch (Exception myEx) {
           System.out.println("The exception was handled...");
       }

       System.out.println("This is the end of the program...");
   }
}
هاڻي پيداوار تبديل ٿي وئي آهي:
استثنا سنڀاليو ويو... هي پروگرام جي پڄاڻي آهي... ايگزٽ ڪوڊ سان پروسيس ختم ٿيو 0 ايگزٽ ڪوڊ سان پروسيس ختم ٿيو 0
انهي حالت ۾، پروگرام صحيح طور تي مڪمل ڪيو، اسان جو پيغام اسڪرين تي ڏيکاريل آهي. پروگرام جي صحيح ختم ٿيڻ کي پروسيس جي آخر ۾ ڪوڊ 0 جي ذريعي اشارو ڪيو ويندو آهي، جڏهن ته غلط - 1. جڏهن هڪ ڪوشش... ڪيچ بلاڪ استعمال ڪندي، ڪوشش ۽ ڪيچ بيانن جي وچ ۾ سڀ بيان پهرين تي عمل ڪيا ويندا آهن. جيڪڏهن ڪوشش بلاڪ ۾ هڪ استثنا ٿئي ٿي، ته عام عمل جي حڪم کي روڪي ٿو ۽ ڪيچ بيان ڏانهن اڳتي وڌندو آهي. تنهن ڪري، جڏهن پروگرام جي عملدرآمد انگن تائين پهچي ٿو [7] = 8؛ لائن ۾، پروگرام بند ٿي ويندو ۽ ڪيچ بلاڪ ڏانهن وڃو اسان جي صورت ۾، اسان قسم جي استثنا سان متغير myEx جو اعلان ڪيو آهي. هي بنيادي ڪلاس آهي سڀني استثنان لاءِ، ۽ تنهن ڪري اهي مختلف ٿي سگهن ٿا. مثال طور، اهڙا استثنا آهن جيڪي اسٽيڪ اوور فلوز جا ذميوار آهن، صفن جي انگن اکرن کان اڳتي وڌڻ، جيئن اسان جي صورت ۾، نول ڏانهن اشارو ڪندي، وغيره. جيڪڏهن اسان استثنا جي قسم سان اندازو نه لڳايو ها ته پوءِ پروگرام به غلط طريقي سان ختم ٿي وڃي ها. بهرحال، اسان چونڊيو استثناءَ جو قسم مثال جي سادگي لاءِ، ۽ اهو آهي بنيادي ڪلاس سڀني استثنان لاءِ. تنهن ڪري پڪڙي بيان (استثني myEx) لڳ ڀڳ سڀني استثنا کي سنڀاليندو. هن معاملي ۾ استثنا کي هٿي وٺندي ڪيچ بلاڪ مڪمل ٿيڻ کان پوءِ، پروگرام پنهنجو ڪم جاري رکي، ڪيچ بلاڪ کان پوءِ ٻين سڀني هدايتن تي عمل ڪندي. جيڪڏھن توھان ڏسڻ چاھيو ٿا واقعا استثنا، توھان حاصل ڪري سگھو ٿا پروگرام پرنٽ ھڪڙي اسٽيڪ ٽريس جو طريقو ڪالون. اھو اھو آھي جيڪو JVM ڪندو آھي جڏھن ھڪڙي غير محفوظ استثنا ٿئي ٿي: اھو پروگرام جي عمل کي روڪي ٿو، ۽ آخرڪار بلاڪ جي ڪوڊ کي عمل ڪرڻ کان پوء ھڪڙي اسٽيڪ ٽريس کي پرنٽ ڪري ٿو، جيڪڏھن موجود آھي.
public class TryTest {
   public static void main(String[] args) {
       try {
           int[] myArray = new int[5];
           myArray[7] = 8;
           System.out.println(myArray[7]);
       } catch (Exception myEx) {

         myEx.printStackTrace();
       }

       System.out.println("This is the end of the program...");
   }
}
ھن صورت ۾ استثنا کي ھٿ ڪرڻ ھيٺ اچي ٿو پرنٽ ڪرڻ لاءِ غلط ٽريس اسٽيڪ اسٽيڪ کي ڪنسول ۾ استعمال ڪندي استعمال ڪندي printStackTrace() طريقو استثنا ڪلاس ۾ بيان ڪيل آھي.
java.lang.ArrayIndexOutOfBoundsException: انڊيڪس 7 جي حد کان ٻاهر 5 ڏينهن تي.TryTest.main(TryTest.java:7) هي پروگرام جي پڄاڻي آهي... عمل ختم ٿيو ايگزٽ ڪوڊ 0 سان
بهرحال، پروگرام صحيح طور تي ختم ٿي ويو.

آخرڪار! پڪڙڻ کان پوءِ

مثال ۾ ۽ اهم لفظن جي وصفن ۾ استثنا هٿ ڪرڻ لاءِ، اسان آخر ۾ بلاڪ جو ذڪر ڪيو آهي. اهو اختياري آهي، پر جيڪڏهن موجود هجي، ته ان تي عمل ڪيو ويندو بغير ڪوشش جي بلاڪ جي نتيجن جي. اچو ته استثنا جي قسم کي NullPointerException ۾ تبديل ڪريون.
public class TryTest {
   public static void main(String[] args) {
       try {
           int[] myArray = new int[5];
           myArray[7] = 8;
           System.out.println(myArray[7]);
       } catch (NullPointerException myEx) {
           System.out.println("The exception was handled...");

       }

       finally{
           System.out.println(" finally");
       }

       System.out.println("This is the end of the program...");
   }
}
هتي جي پيداوار آهي:
ٿريڊ ۾ استثنا "main" java.lang.ArrayIndexOutOfBoundsException: Index 7 جي حد کان ٻاهر 5 جي لاءِ ڏينهن تي.TryTest.main(TryTest.java:7) آخرڪار عمل ختم ٿيو ايگزٽ ڪوڊ 1 سان
رستي ۾، اسان وضاحت ڪري سگھون ٿا استثناء جو قسم صحيح هجڻ لاء. هتي اهو آهي IndexOutOfBoundsException.
public class TryTest {
   public static void main(String[] args) {
       try {
           int[] myArray = new int[5];
           myArray[7] = 8;
           System.out.println(myArray[7]);
       } catch (IndexOutOfBoundsException myEx) {
           System.out.println("The exception was handled...");

       }

       finally{
           System.out.println(" finally");
       }

       System.out.println("This is the end of the program...");
   }
}
هن معاملي ۾، پيداوار هيٺين ريت ٿيندو:
استثنا سنڀاليو ويو... آخرڪار هي پروگرام جي پڄاڻي آهي... عمل ختم ٿيو ايگزٽ ڪوڊ 0 سان

استثناءَ جو ڪم ڪهڙو آهي؟

نقطو اهو آهي ته اهي سڀئي لفظ -catch، throw، throws صرف java.lang.Throwable يا ان جي اولاد سان استعمال ڪري سگهجن ٿا. مثال طور، توھان ھي ڪري سگھو ٿا:
public class MyClass {
    public static void main(String[] args) {
        try {
        } catch (Throwable thr) {
}
    }
}
تنهن هوندي به، توهان هن وانگر نه ٿا ڪري سگهو:
public class MyClass {
public static void main(String[] args) {
        try {
        } catch (String thr) {
}
    }
}
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION