فرق اور غلطی کے درمیان فرق
استثنا بمقابلہ خرابی
غیر متوقع طرز عمل ہونے پر پابند ہے جب کوئی پروگرام چل رہا ہے. یہ استثنا یا غلطیوں کی وجہ سے ہوسکتا ہے. استثناء واقعات ہیں، جو عام پروگرام کے بہاؤ پریشان کرسکتے ہیں. غلطیاں ایسی شرائط ہیں جو ناقابل اعتماد سمجھا جا سکتا ہے. استثنیات زیادہ تر درخواست سے متعلق ہیں، جبکہ غلطی اس نظام سے متعلق ہے جس پر یہ پروگرام چل رہا ہے.
استثنا کیا ہے؟استثنا ایک ایونٹ ہے، جو عام پروگرام کے بہاؤ پریشان کرسکتا ہے. نام استثنا "غیر معمولی واقعہ" سے آتا ہے. ایک استثناء کو پھینکنا ایک استثنا اعتراض پیدا کرنے اور اسے رن ٹائم کے نظام کے حوالے کرنے کا عمل ہے. استثنی آبجیکٹ اس طریقہ کی طرف سے پیدا ہوتا ہے جس میں استثنا ہوا ہے. استثنائی آبجیکٹ مفید معلومات جیسے قسم اور استثنا کی وضاحت پر مشتمل ہے. جب رنٹ ٹائم سسٹم استثنا اعتراض حاصل کرتا ہے، اسے کسی کو کسی کو تلاش کرنے کی کوشش کرے گی جس میں اس کے ذریعے ریڈ آرڈر (جس میں طریقوں کو بلایا گیا تھا) میں منتقل ہوجائے. کال اسٹیک طریقوں کا حکم دیا گیا ہے، جس کا طریقہ اس سے قبل کہا گیا تھا جس میں استثنا ہوا. رن ٹائم کا نظام کامیاب ہو جاتا ہے تو یہ ایک استثنا ہینڈلر کے ساتھ ایک طریقہ ملتا ہے. استثنائی ہینڈلر کوڈ کا ایک بلاک ہے جس میں سرکاری استثنا کو ہینڈل کرسکتا ہے. اگر رن ٹائم کے نظام کو ایک مناسب ہینڈلر (مثال کے طور پر استثنی کی قسم کی نوعیت سے نمٹنے کے لۓ میچ ملتا ہے)، یہ ہینڈلر میں استثنا اعتراض کو منظور کرے گا. یہ استثنا کو پکڑنے کے لئے کہا جاتا ہے. تاہم، اگر استثنا سنبھالا نہیں جاسکتا ہے تو یہ پروگرام ختم ہوجائے گی. جاوا میں، مستثنی طور پر 'تھروبل کلاس' سے وراثت ہے. NullPointerException اور ArrayIndexOutOfBoundException جاوا میں دو عام استثناء ہیں.
ایک غلطی ایسی حالت ہے جو ناقابل اعتماد سمجھا جا سکتا ہے جیسے پروگرام دستیاب ہے اس سے کہیں زیادہ میموری کی ضرورت ہوتی ہے. یہ غلطیاں رن ٹائم پر سنبھال نہیں جاسکتی ہیں. اگر کوئی غلطی ہوتی ہے تو، پروگرام ختم ہوجائے گی. جاوا میں، غلط طبقے سے غلطیوں کی وراثت غلطیاں عام طور پر سنجیدہ مسائل کے حامل ہیں جو پروگرامر (یا درخواست) کو پکڑنے کی کوشش نہیں کرنی چاہئے. غلطیاں صرف غیر معمولی حالات ہیں، جو کبھی بھی عام حالات کے تحت ہونے کی توقع نہیں کی جاتی ہے، اور اس وجہ سے کبھی بھی کبھی نہیں. مثال کے طور پر، آؤٹ اوفمیوری ایریر، اسٹیک اوور فلوفیرآرٹ اور ThreadDead ایسی غلطیاں ہیں. طریقوں کو ہینڈلروں کو کبھی بھی غلطی نہیں ہونا چاہئے.
غلطی اور استثناء کے پروگرام کے عمل کے دوران غیر معمولی واقعہ موجود ہیں. تاہم، ان کے اہم اختلافات ہیں. پروگرامر کی طرف سے استثناء کی پیشکش کی جاسکتی ہے، جبکہ ایک غلطی کی کوشش کرنا مشکل ہے.استثنائیوں کی جانچ پڑتال یا ان کی جانچ پڑتال کی جا سکتی ہے. لیکن غلطیاں ہمیشہ غیر مربوط ہیں. استثنی عام طور پر پروگرامر کی وجہ سے ایک غلطی کی نشاندہی کرتی ہے. تاہم، غلطی کی وجہ سے کسی غلطی یا کسی وسائل کے نامناسب استعمال کی وجہ سے غلطیاں ہوتی ہیں. لہذا، استثناء کو درخواست کی سطح پر سنبھالنا چاہئے، جبکہ نظام کی سطح پر غلطیوں کا خیال رکھنا چاہیے (صرف اگر ممکن ہو). ایک استثنا کو سنبھالنے کے بعد، آپ کو عام پروگرام کے بہاؤ میں واپس جانے کی ضمانت دی جاتی ہے. لیکن اگر کوئی غلطی پکڑا جائے تو، پروگرامر یہ بھی جان سکتا ہے کہ اسے پہلی جگہ میں کیسے ہینڈل کرنا ہے. روایتی غلطی کو سنبھالنے کے برعکس، استثنیات کو باقاعدہ کوڈ سے غلطی سے ہینڈلنگ کوڈ کو الگ کرنے کی اجازت دیتا ہے.