 بسم اللہ الرحمن الرحیم آج ہم موڈیول 57 دسکس کریں گے. موڈیول 57 کے اندر ہم یہ ایکسپلین کریں گے کہ ہم کیسے بیٹر پروگرامز رائٹ کر سکتے ہیں. Using Exception Handling. Exception Handling جو ہے وہ ہمیں بڑا اچھا کنٹرول دیتی ہے. اس کے اندر کسی بھی کسم کا ایرار آتا ہے run time. تو ہم exception کی مدد سے اس کو کعچ کر سکتے ہیں. اور minute سے minute بھی جو کوئی ایرار ہے اس کا ہمیں اسی وقت exception handling کے ترو پتہ لکھ سکتا ہے. یہ جو ابھی ہم پوگرام دسکس کرنے لگیں یہ ایس چیز کی بڑی اچھی اگزامپل ہے کہ ہم مختلف چیزیں ٹرائے کریں گے جو جو اپریشنز ٹرائے کریں گے اور اگر اس کے اندر کسی کسم کا ایرار آتا ہے تو ہم اس کو exception سے کعچ بھی کر سکتے ہیں اور pin point کر کے بتا سکتے ہیں کہ جی کس کسم کا ایرار آیا ہے کس وجہ سے پوگرام جو ہے وہ اپنی ایزیوکشن کمپلیٹ نہیں کر سکا تو وہ پوگرامر کے لیے بھی use فلہ یا user کے لیے بھی use فلہ کو اس کو پدہ چل جائے کہ کیا ایسی چیز غلطوی ہے جس کی وجہ سے پوگرام کی execution کمپلیٹ نہیں ہو سکیں. تو یہ ایک exception handling کی ایک جو سٹرنگت ہے یہ آپ پوگرامرز کو حلب کرتی ہے اور جو use ہے ان کو حلب کرتی ہے اور آپ کو pin point کر کے یہ decide کر کے بتا سکتے ہیں کہ کس کسم کا ایرار آیا. اگر ہم جو وہ پرانی style کی ایرار handling کیاگر بات کریں تو اس کے اندر بس ہمیں ایک ایرار میسج مل جاتا ہے کہ کیا ایرار ہے. ہم اس کو pin point کر کے نہیں بتا سکتے ہیں کہ کس particular operation کی وجہ سے یہ ایرارا کروا. most of the cases کے اندر. تو ہم اس پوگرام کی طرف چلتے ہیں اس پوگرام کو دسکتے ہیں. یہاں پہ یہ آپ ایک پوگرام دیکھ رہے ہیں. اس پوگرام کو ایک file name pass کیا گیا ہے through command line parameter argument v کے اندر اس file کا نام ہے. یہ ہم نے مختلف ادر variables ڈفائن کیوے یہ ہمارے پاس بفر ہے. یہ file name کیلئے یہاں پہ ہمارے پاس بفر ہے 256 file name windows کے اندر 256 characters تک کہہ ہو سکتا ہے. ہمارے پاس handle ہے اور اس کو ہم نے نیشلائس کیا with invalid handle out handle ہے ایک in handle ہے ایک out handle ہے اس کو بھی ہم نے نیشلائس کیا with invalid handle. یہ پوگرام کرے گا کیا. یہ پوگرام ایک file لے گا. simply اس file کو اس نے convert کرنا ہے into upper characters اس کے اندر جترے بھی characters ہیں وہ یہ دیکھے گا کہ وہ alphabetic character ہے اس فائل کو read کرے گا اس کے سارے characters کو read کرے گا bite by bite ان کو چیک کرے گا اور پھر وہ دیکھے گا کہ یہ alphabetic characters ہیں اگر alphabetic characters ہیں تو ان کو two upper کر دے گا upper case میں convert کر دے گا اور باپس ایک file کے اندر store کر دے گا. ایک اس کی input file ہے ایک اس کی output file ہے. آگے فردر ہم چلتے ہیں. یہاں پہ report error اس نے use کیا کہ یہ just windows کو چیک کرا ہے کہ جی windows کو کون سب ویڈن ہے. اگر version مطابق نہیں ہیں تو پھر error report ہو رہا ہے. پھر اسی طرح arguments کو چیک کرا ہے. argument count اگر one ہے یا اس سے lesser ہے. اس case میں بھی یہ error report کر رہا ہے. پھر اس کے بعد argument c کو چیک کر رہا ہے. argument c جو ہے وہ ہمارا count ہے کہ کتنے پیرامیٹرز input ہوئے اور اس کو چیک کرنے کے بعد یہ ہمارے argument v کی value چیک کر رہا ہے. argument v کو چیک کر رہا ہے اور اس کی length لے رہا ہے. argument v جو ہے وہ strength ہے وہ in fact file کا نام ہے. تو اس کو دیکھ رہا ہے کہ اس file کے نام کی جو length ہے وہ 250 سے کم ہونی چاہیے. اگر وہ زادہ ہے اس صورت کے اندر یہ کیا کرے گا یہ report exception کرا ہے. یہاں پہ file name is too long. 250 سے بڑا ہو گیا. بہت لمبہ file name ہے. یہ کوئی valid file name نہیں ہو سکتا. پھر اسی طرح سے یہاں پہ دیکھیں یہ try کا clause ہے اور پھر یہ create file. create file بھی ایک ایسا operation ہے جس کے اندر exception ہا کر ہو سکتی ہے. وہ ایک create file کرہا ہے جو بھی اس کو نام pass کیا گیا ہے file کا اس نام کی ایک وہ file create کرتا ہے اور create کرنے کے بعد read کا handle read کے لیے اس کو create کرہا ہے اور اگر invalid handle return ہوا input handle کے اندر اگر invalid handle return ہوا تو اس case میں وہ کہتا ہے report exception exception report ہو جائے گی. پھر اسی طرح سے اس کا file size لے رہا کہ اس کے اندر کتنے بائیٹس ہیں. file size لے کے بعد اگر وہ کسی کسم کا error آ کر ہوتا تو اس case کے اندر report exception دے رہا. اگر high part جو ہے اس کے اندر بہت بڑی value آگی ہے. high part کے اندر zero نہیں ہے. کچھ آگیا تو اس کا file size is too large. پھر اسی طرح سے ایک اور create file کرا. اب یہ یہاں پہ right کے لیے بھی create کرا جناریک right کے لیے یہ آپ کی output file ہوگی. تو output file ہے اس کو بھی چیک کرا. اگر invalid handle آیا again وہ کیا کردے گا exception race کردے گا. report exception ہو جائے گی. پھر اس نے memory allocate کی جتنا کے file کا size کا low part تھا. کیونکہ file کا size تو بہت بڑا ہو سکتا. اس نے صرف low part لیا. یعنی کہ 64k 64k سے بڑا نی. ہو سکتا low part. پھر اس نے report exception کردی. ان case اگر جو buffer ہے وہ اس کے پاس نال آتا ہے. کوئی memory allocate نہیں ہوتی. تو report exception کردی. اس کا مطلب ہے کہ memory right کیسے allocate نہیں ہو سکی. تو یہاں پہ ایک exception آ کرو جائے گی. آپ بھی دکھ دیکھ چکے ہیں کہ جان جان کہیں ایرر اکر ہونے کا چانس ہے وہاں پہ اگر ایرر اکر ہوتا تو اس کو چیک کر رہا ہے اور اس کے result میں exception کو race کر رہا. اچھا پھر اسی طرح سے file کو read کرتا ہے read file کی مدد سے. file ساری read کرنے کے بعد وہ اس buffer کے اندر place کر رہا ہے. اور ان case یہ file نہیں read ہو پاتی جتنا اس نے size specify کیا ہے اس کے according لی تو وہ کیا کرے گا report exception کردے گا. اور پھر یہ ایک loop چلا رہا ہے جتنا بھی اس کا size ہے low part جتنا بھی اس کا size ہے ایک loop چلا رہے گا loop چلا کے ہر character by character یہ چیک کر رہا ہے کہ یہ character جو ہے alpha بیٹک ہے. اگر alpha بیٹک ہے تو اس کو کیا کر رہا ہے. two upper کر کے واپس اسی کے اندر store کر رہا ہے. اسی اور ایک اندر اس کو واپس رکھا رہا ہے. تو ایک character اگر lower case تھا تو وہ واپس upper case ہو کے اسی کے اندر store ہو گیا. اور p buffer کی اندری وہ character آگیا. now p buffer کو جو ہے یہ output file کیا پر واپس write file سے write کر رہا ہے. اور کسی وجہ سے اگر نہیں write ہو پاتا ہے جو transfer bytes ہیں that is not is equals to the low part تو اس case کے اندر یہ again exception ریس کر دے گا. exception ریس کر دے گا. error آ جائے گا. پھر یہ اس کا finally والا part ہے جب یہ سارا کو سائیتری کیسے ہو جاتا ہے تو اس case میں آپ کو کیا کرنے کی زیادہ ہے جتنے بھی آپ نے handle جو ہیں allocate کیا ان کو de allocate کرنے کی زیادہ ہے. یہاں پر دیکھیں کہ آپ نے جو memory buffer allocate کیا تھا اس کو free کرتا ہے. handle جو allocate کیا تھا اس کو close کر رہا ہے. دوسرا handle open کیا تھا اس کو بھی close کر رہا ہے اور یہ جو out file جو آپ کے پاس ایک variable ہے اس کے اندر اس نے واپس null رکھوا دی ہے null string رکھوا دی ہے. پھر exception والے part کے اندر یہ کیا کرتا ہے کہ جی وہ کہتا ہے کہ یہ error آ کروا ہے اور file کو simply delete کر دیتا ہے. جو بچ میں جتنی بھی exception کا کرویں ہیں ان کی exception کے result میں یہ except والے part میں جائیں گا اور یہاں پہ just وہ ایک error display کر کے جو file ہے اس کو delete کر دے گا. out file کو delete کر دے گا