CodeGym /جاوا بلاگ /Random-UR /جاوا ٹرائی - کیچ
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

مختصراً کوشش کے بارے میں، کیچ، آخر میں، تھرو کی ورڈز

جاوا میں استثنیٰ ہینڈلنگ پروگرام میں درج ذیل کلیدی الفاظ کے استعمال پر مبنی ہے:
  • try — کوڈ کے ایک بلاک کی وضاحت کرتا ہے جس میں ایک استثناء ہو سکتا ہے۔
  • catch — کوڈ کے بلاک کی وضاحت کرتا ہے جس میں استثناء کو سنبھالا جاتا ہے۔
  • آخر میں - کوڈ کے ایک بلاک کی وضاحت کرتا ہے جو اختیاری ہے، لیکن اگر موجود ہے تو، بہرحال عمل میں لایا جاتا ہے، قطع نظر کوشش کے بلاک کے نتائج۔
یہ مطلوبہ الفاظ پروگرام کوڈ میں خصوصی پروسیسنگ کنسٹرکٹس بنانے کے لیے استعمال کیے جاتے ہیں: کیچ کی کوشش کریں، اور آخر میں پکڑنے کی کوشش کریں}۔
  • پھینک - ایک استثناء کو بڑھانے کے لئے استعمال کیا جاتا ہے؛
  • تھرو - طریقہ کار کے دستخطوں میں استعمال کیا جاتا ہے تاکہ متنبہ کیا جاسکے کہ کوئی طریقہ مستثنیٰ ہوسکتا ہے۔

ٹرائی کیچ کنسٹرکشن کی آسان مثال

ہم کہتے ہیں کہ ہمارے پاس کچھ صف کے ساتھ ایک پروگرام ہے۔
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: انڈیکس 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 کے ذریعے عمل کے اختتام پر کیا جاتا ہے، جبکہ غلط — 1. کوشش کرتے وقت... کیچ بلاک کا استعمال کرتے ہوئے، کوشش اور کیچ کے بیانات کے درمیان تمام بیانات پہلے عمل میں آتے ہیں۔ اگر ٹرائی بلاک میں کوئی استثناء ہوتا ہے، تو عام عمل درآمد کا حکم رک جاتا ہے اور کیچ اسٹیٹمنٹ پر آگے بڑھ جاتا ہے۔ لہذا، جب پروگرام پر عمل درآمد نمبروں تک پہنچ جاتا ہے[7]=8؛ لائن، پروگرام رک جائے گا اور کیچ بلاک پر چلا جائے گا، ہمارے معاملے میں، ہم نے قسم کے استثناء کے ساتھ متغیر myEx کا اعلان کیا ہے۔ یہ تمام مستثنیات کے لیے بنیادی کلاس ہے، اور اس لیے وہ مختلف ہو سکتے ہیں۔ مثال کے طور پر، ایسی مستثنیات ہیں جو اسٹیک اوور فلو کے لیے ذمہ دار ہیں، ارے انڈیکسنگ سے آگے بڑھنا، جیسا کہ ہمارے معاملے میں، Null کی طرف اشارہ کرنا، وغیرہ۔ اگر ہم نے استثنیٰ کی قسم کا اندازہ نہ لگایا ہوتا تو پروگرام بھی غلط طریقے سے ختم ہو جاتا۔ تاہم، ہم نے مثال کی سادگی کے لیے Exception قسم کا انتخاب کیا، اور یہ تمام مستثنیات کے لیے بنیادی کلاس ہے۔ تو کیچ اسٹیٹمنٹ (Exception 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 دن میں طوالت کے لیے۔
تاہم، پروگرام صحیح طریقے سے باہر نکل گیا.

آخرکار! پکڑنے کے بعد

مثال میں اور استثنیٰ ہینڈلنگ کے کلیدی الفاظ کی تعریف میں، ہم نے آخر میں بلاک کا ذکر کیا۔ یہ اختیاری ہے، لیکن اگر موجود ہو، تو اسے آزمایا جائے گا، قطع نظر اس کے کہ ٹرائی بلاک کے نتائج۔ آئیے استثناء کی قسم کو 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: انڈیکس 7 کی حد سے باہر 5 دن میں طوالت کے لیے۔
ویسے، ہم استثنیٰ کی قسم درست کرنے کے لیے بتا سکتے ہیں۔ یہاں یہ 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 کے ساتھ عمل ختم ہوا۔

مستثنیات کے کام کرنے کا طریقہ کیا ہے؟

بات یہ ہے کہ یہ تمام الفاظ —کیچ، تھرو، تھرو صرف 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