 بسم اللہ الرحمن الرحیم آج ہم موڈیول 58 دسکس کریں گے موڈیول 58 ہے about فلٹر فنکشن ہم نے پریویسلی دیکھا تھا جب بھی ایک ایک سبشن آ کر ہوتی ہے تو جو ایک سبت والا پارٹ ہے وہ ایک فلٹر فنکشن کو use کرتا فلٹر فنکشن کے اندر کسی کسم کی انسٹرکشن ہوتی ہے کسی کسم کی انسٹرکشن ہوتی ہے جس سے کہ ہمارا ایک سبت کا جو بلوک ہے وہ یہ اندرسٹانٹ کر سکے یا یہ دسائفر کر سکے یا اس نے جو اپریشنز پرفوم کرنے ہیں جو ایک سبشن کو حنڈل کرنے ہیں وہ کس طریقے سے کرنے ہیں مختلف وجہات ہو سکتی ہے ایک سبشن کیا کرو نکی ہر وجہ کو ہوسکتا ہے کہ ایک دفرن طریقے سے حنڈل کرنے کی ضرورتو تو یہ انفرمیشن کیسے پاس ہوگی ایک سبت کو یہ آپ کا فلٹر فنکشن پاس کرے گا فلٹر فنکشن آپ اپنی نید کے ایک اکارٹنگلی فائن ٹیون کر کے جیسے مرضی برا سکتے ہیں لیکن اس کی جو ریٹرن ٹائیب سے وہ آپ کو بتایا تھا دو تین انماریٹت ویلیوز ہیں کہ اس نے کنٹینو کرنا ہے یا مزیز ٹاک کو انوائنٹ کرنا ہے یا اس نے یہی جو ایک سبت والا کلوز ہے اسی بلوک کو ہی ایکزیکیوٹ کرنا ہے اس کے اندر تین چار ہم نے option پہلے دسکاس کی دی تو اس کی وہ ریٹرن ٹائیبز جو وہ تین چار ہی ہیں جو عام طور پہ use ہوں گی لیکن اس کے لعوہ مزید کچھ اور انفرمیشن جو ہے ہمارا فلٹر فنکشن پاس کرتا ہے تو except بلوک اور وہ آپ اپنے لحاظ سے فائن ٹیون کر سکتے ہیں ٹیلر کر سکتے ہیں اس کو جس طرح کی آپ کی نید ہے اس کے ایکارٹنگلی اس انفرمیشن کو ڈوائیس کیا جائے گا ڈیزائن کیا جائے گا تو اس کے لیے ہم ایک ایک اگزمپل دیکھتے ہیں یہ بڑی ایک سمپل سی اگزمپل ہے اس اگزمپل کے اندر صرف اتنا کیا جا رہا ہے کہ کچھے کوڑ لکھی بھی ہے اور وہ کوڑ ایسی ہے جس کے اندر کسی کسم کے exception کیا کر ہونے کے چانسیز ہیں اور ہم ان exception کو catch کریں گے اور catch کرنے گا لیے بھیر بھیچ میں ہم filter function کا بھی استعمال کریں گے تو یہاں پہ آپ دیکھ ستے ہیں یہاں پہ ہم نے کیا کیا ہے کہ یہاں پہ ہم نے control fp کی مدہ سے جو ہے یہ overflow underflow inexact denormal zero divide invalid یہ والی ساری floating point جو exceptions ہیں ان کو ہم نے enable کر لیا اور جو previous جو بھی اس کا status تھا وہ fp old کے اندر ہم نے save کر لیا یاد رہے جو floating point کو آپ use کرتے ہیں تو اس کو process کرنے کے بعد clear کرنا اور previous status جو اس کو واپس restore بھی کرنا تو یہاں پہ ہمارا یہ try کا clause ہے while loot کے اندر اب اس کے اندر ہم کیا try کرتے ہیں مخلیف چیزیں یہاں پہ ہم try کر رہے ہیں یہاں پہ ایک یہ memory reference try ہو رہا کیا تو اس memory reference کہ result میں کیا ہو سکتا ہے exception ہاں کرو سکتی ہے memory read بھی ہو رہی ہے memory write بھی ہے ہو رہی ہے آپ نے کوئی ایک null pointer assignment کی بھی ہے کوئی ایک ایسا variable ہے جو وہاں پہ existی نہیں کرا وہاں پہ کو memory area existی نہیں کرا وہاں پہ آپ نے pointer دیا اور آپ memory کو access کریں exception ہاں کرو سکتی ہے یہاں پہ ایک arithmetic operation ہو رہا ہے اس arithmetic operation کی وجہ سے بھی exception ہاں کرو سکتی ہے divide overflow ہو سکتا ہے division by zero ہو سکتی ہے تو یہاں پہ floating point operation ہو رہا ہے یہاں پہ be divide overflow ہو سکتا ہے division by zero ہو سکتی ہے اور یہاں پہ ہم کو اگر say user generated report exception کی مدل سے user generated exception generate کریں اور case five کو اس نے اسی چھوڑ دیا ہے کہ وہاں پہ صرف اس نے leave کا statement use کیا اب آگے آپ دیکھیں یہ except کا clause ہے except کا clause جو ہے یہ اس کے اندر آگے یہ مزید ایک function کو call کرتا ہے get filter exception except کا clause کے اندر یہ filter function ہے filter function جو ہے آگے اس function کو call کرا ہے get exception information ہم نے اس کو previously discuss کیا تھا یہ ایک data structure return کرتا ہے اس سے exception سے relevant information ہوتی ہے اور ساتھ یہ ایک reference یہاں پہ اس نے pass کیا ہے e category e category یہ ایک reference variable ہے جب یہ function return کرے گا تو ہم e category کی اندر پڑیوی value کو دیکھ کے یہ بتا سکتے ہیں کہ کس طرح کی exceptionہ کروی ہے کہ اگر اس کی value zero ہے تو اس کو zero کیلہاں سے process کیا دایا گا one ہے تو one کیلہاں سے کیا دایا گا جو بھی اس کی value اس کی category ہے اس کی according لی اس کو process کیا دایا گا تو یہاں پہ یہاں بلوگ جو ہے اس کے اندر switch statement لگا ہے اور category to category basis کے اوپر وہ مختلف exceptions کو process کر رہا ہے یہ آپ کو just یہ show کرنے کری یہاں پہ یہ switch statement لگا ہے گا اور اس کے بعد جو بہر والا outer try ہے اس outer try کے لیے آپ کے پاس یہاں پہ finally کا clause ہے اور finally clause کے اندر just ہم یہ دیکھ رہے ہیں کہ abnormal termination ہوئی ہے یا نہیں ہوئی اس کے لیے abnormal termination کا function call کیا اور وہ جو بھی value return کرے گا وہ یہاں پہ display ہو دے گی اور آپ نے ساتھ اساتھ یہ بھی کیا ہے کہ کیونکہ floating point operations use ہو رہے تھے تو آپ کو واپس جو old کی value تھی وہ واپس restore کرنے پڑھائے جو بھی floating point master previously وہ واپس restore کرنا پڑھا گا تو اس program کے اندر اس طرح سے ہم نے filter function کی مدل سے یہاں پہلے دیکھیں filter function important ہے filter function کی مدل سے decided کیا ہے کہ جو ہماری exception ہے اس focus تریکے سے treat کیا ہے اور filter function اپنی processing کے بعد کیا چیز return کرا ہے یہ ایک variable return کرا ہے e category آگے ہم یہ دیکھیں گے یہ جو e category variable return کرا ہے اس کے اندر اس نے کیس طرح سے values رکھی ہیں کیس طرح سے decided کیا ہے کہ e category میں کیا value رکھیں گے تو اس function کی detail کو جانا ضروری ہے یہ دیکھنے کے لیے کہ آپ کیس طرح سے اپنی exceptions کو filter کریں گے تو اس function پہ چلتے چلتے ہیں اس function کے اندر دیکھیں filter کا function ہے اور یہاں پہ exception pointer long pointer to exception pointer اور یہ e category long pointer to exception pointer ہمارے پاس کیسے آیا وہ ہمارے پاس previous لیے ہم نے دوسری ایک API use کی تھی get exceptions status کی جو کہ یہ اس طرح کا data structure آپ کو return کرے گا اور اس data structure کی اندر exception so relevant information exception record ہے اور اس میں exception کی code ہے اس information کو ہم دیکھ کے پتا سکتے ہیں کہ کیس وجہ سے exception اکر ہوئی ہے اگر تو یہ user generated exception ہے user generated exception کے لیے اگر اس کے لیے والا mask use ہو رہا ہے اس mask کے ساتھ اگر اگر آپ اس کو and کریں گے تو آپ کے پاس results 0 آتا ہے اس کا مطلب ہے کہ یہ user generated exception ہے اگر اس user generated exception ہے تو اس کو آپ category 10 کریں یہ آپ کی اپنی مرضی ہے یہ اس پرکرامر نے جس نے یہ پرکرام لکھا ہے اس نے اپنی مرضی سے اس کو category 10 اسائن کر دی اور یہ return کر دی اور اس نے کیا والی return کی exception handler execute یعنی کہ جب یہ واپس return کرے گا into accept clause تو accept clause وہی والا accept clause جہاں وہ execute ہوگا مزیز ڈاک unwind نہیں ہوگی یا پرکرام کی execution continue نہیں ہوگی اچھا اب یہ ex code کو مزید ہم یہاں پے scrutinize کریں اگر یہ code یہ ہے کہ exception excess violation ہی ہے یہاں پہ دو ہم نے دیکھ لیا کہ یہ user generated exception ہے user generated exception کو handle کر لیا اگر وہ نہیں ہے تو ہم دیکھ رہے ہیں مزید اس کو اگر تو یہ excess violation ہے یعنی کہ آپ نے میمری کو رفر کیا ہے اور وہ میمری کیا آپ کو excess rights نہیں تھے excess violation آئے گی تو excess violation کی case کے اندر ہم یہ دیکھیں گے کہ جی یہ read write error تھا کس طرح کا error تھا تو یہ ہمیں a structure کے اندر یہاں پہ information کے اندر 0 byte کے اوپر یہ information ملائی گی اور کس address پہ یہ error آ کرو ہے وہ address بھی ہمیں اس location کے اوپر اس data structure کے اندر مل جائے گا اور یہاں پہ یہ just ایک messes دے رہا ہے کہ excess violation ہے کس وجہ سے excess violation ہے read ہوا ہے write ہوا ہے کیا ہوا ہے اس کی وجہ سے excess violation ہے اور کس address کے اوپر یہ excess violation آ کروی ہے اور category اس نے ایک اس کو اسائن کر دیوان ہے اس نے اپنی مرزی سے کیا اور exception execute handler اس کا مدلہ ہے کہ وہی جو handle جس میں سے یہ call ہوا ہے وہی handler execute ہوگا مزید وہ ex code کو دیکھتا اگر ex code جو exception code جو وہ integer کی due in by 0 ہے یا integer کی overflow کی وجہ سے آ کروی ہے تو اس نے category رہ دی یہاں پہ 2 category کا مدلہ ہے کہ integer operation کے اندر کسی کسم کا overflow آیا کسی کسم کا error آیا تو یہ exception آ کروی ہے اور execute handler وہی handler execute ہوگا پھر اسی طرح اگر exception ہے float divide by 0 یا float overflow floating point number کی division by 0 کی وجہ سے آ کروی ہے floating point number کے overflow کی وجہ سے آ کروی ہے تو اس نے اس کی category رہ دی 3 یہ توکلی آپ کی اوپر ہے اور یہاں پہ پھر کیونکہ اس نے اس exception کو use کر لیا تو اس نے ادھر clear fp بھی کرنا ہے یہ ہم نے previously دیکھاتا اور وہی جو ہمارا handler ہے execute ہوگا وہ چاہے آپ پھر handler کے اندر کر لیں چاہے یہاں کر لیں یا آپ programmer کی اس کے اوپر ہے اور اگر اس کے لیوہ کوئی اور چیز ایسی کسی اور وجہ سے exception آ کروی ہے تو اس کے لیوہ اس نے category رہ دی ہے 0 وہ صرف کس چیز کو handle کر رہا ہے floating point number کی exception کو integer number کی exception کو اور read write کی exception کو handle کر رہا ہے اور بھی کئی exception ہے ان کو بھی handle کیا جاتا ہے لیکن just یہ ایک example ہے آپ کو show کرنے کے لیے تو آپ کا جو previous program تھا جب اس previous program کے اندر return کرے گا تو e category کی value کو آپ دیکھے یہاں پہتا رہے ہیں اگر 0 ہے تو 0 کا مطلب ہے unknown exception اگر 1 ہے تو اس کا مطلب ہے memory reference read write کی وجہ سے exception آ کروی ہے اگر 2 ہے تو اس کا مطلب ہے integer operation کی اندر کسی کسم کی exception آئی ہے اگر 3 ہے تو اس کا مطلب ہے floating point operation کی اندر کسی کسم کی exception آئی ہے اور اگر 10 ہے تو اس کا مطلب ہے کہ یہ کوئی user defined exception ہے اور default میں اس نے رکھا ہے اگر اس کے لیے وہ اور بھی کوئی value آتی ہے تو وہ بھی unknown exception ہے