 بسم اللہ الرحمة� ایک سپشنہنلنگ کے اندر ہم نے دیکھا ہے کہ ہم ایک سپشنز کو حنڈل کرتے ہیں اور کنسول کنٹرول حنڈلنگ کے اندر میں دیکھا ہے کہ ہم ایک function یا حنڈلر بناکے رکھ سکتے ہیں اور جب بھی کوئی کنسول کا ایونٹ آ کر ہوتا ہے تو اس کے ایک حنڈلر جو ہے وہ ایکزیکیوٹ ہو وہاں پہ ٹرائے اور ایکسپٹ وغیرہ ہم use نہیں کرتے ویکٹرد ایکسپشنز یہ بھی ان دونوں چیزوں کا mix ہے اس کے اندر بھی آپ حنڈلر بنا سکتے ہیں اور جب بھی کوئی ایکسپشنہ آ کر ہوگی را دن کہ آپ کی وہ سٹرکچرد ایکسپشن ایکزیکیوٹ ہو آپ کا وہ حنڈلر جو ہے ایکزیکیوٹ ہو یعنی کہ جو آپ کا حنڈلر فنکشن ہے اس پر دریکٹ ایکزیکیوٹشن ہوگی آپ ایک ہر جو بھی ایکسپشن ہے اس کے لیے ایک فنکشن بنا سکتے ہیں اور جو ہی وہ ایکسپشن آ کر ہوگی دریکلی اس فنکشن کی ایکزیکیوٹشن ہو جائے گی آپ کو اس فنکشن کو جسٹ وندوز کے پاس رجسٹر کرنا پڑھے گا جس کے لیے ایک سیٹ آف ایوپی آئیز وندو پروایٹ کرتی ہے جو وندوز کا اپنا طریقہ کار ہے وہ یہ ہے کہ جب بھی کوئی ایکسپشن آ کر ہوتی ہے for example ڈوین بایزیرو ہوگیا یا انویلیڈ انسٹرکشن ہوگی پیج فالٹ ہوگیا کوئی بھی اگر ایکسپشن آ کر ہوتی ہے تو وندوز کیا کرتی ہے وندوز سب سے پہلے ویکٹرد ایکسپشن کو دیکھتی ہے یعنی کہ ویکٹرد ایکسپشن حنڈلرز کو چیکٹتی ہے کیا اس کے پاس کوئی ویکٹرد ایکسپشن حنڈلرز جو وہ رجسٹر ہوئے ہیں اگر وہ رجسٹر نہیں ہوئے تو پھر وہ سٹرکچرد ایکسپشن حنڈلرز کی پاس جاتی ہے اور اس کے اندر بھی آپ کو پتا ہے کہ ایک سٹاک ہوتی ہے پہلے سٹاک اندر جو طوپ پہ ہوتا ہے اس کو وہ دیکھتی ہے اگر وہ آگے اگلے کو پاس کردتا ہے ایکسپشن تو اس کے اندر وہ سٹاک کو انوائنڈ کرتی ہے اور جو بھی چین ہوتی ہے وہ پوری ٹریورز کرتی ہے اسی طرح ویکٹرد ایکسپشن حنڈلرز کی بھی چین جو ہے وہ بنائی جا سکتی ہے تو ویکٹر ایکسپشن حنڈلر کا ہمیں ادوانٹج کیا ہے اس کا ادوانٹج ایک سب سے بڑا یہ ہے کہ آپ کو وہ ٹرائے کا جو ایک کنسٹرکٹ ہم نے پہلے use کیا تھا اور کچھ کا ساتھ کنسٹرٹ کیا تھا اس کنسٹرٹ کیا آپ کو یہاں پھر ضرورت نہیں پڑھتی آپ اس کے بغیر ایک سیمپلر ایک زیادہ موڈلر طریقے سے ایک سیمپلسہ ایک فنکشن بنائا کے ایکسپشن کو حنڈل کر سکتے ہیں اور اس لہاں سے جو ویکٹر ایکسپشن حنڈلنگ ہے وہ console control حنڈلرز جیسی ایک طرح کی چیز ہے کہ اس کے اندرہ آپ فنکشن بنائا کے ایکسپشن کو حنڈل کر سکتے ہیں پھر windows ایک ساتھ of apis پروائیٹ کرتی ہے جس کے مدہ سے آپ ویکٹر ایکسپشن حنڈلرز کو مانج کر سکتے ہیں اس اپیائی کو تسکرس کرتے ہیں یہاں پہ سب سے پہلی اپیائی جو ہے that is Add Vector Exception Handler جس طرح ہم نے اس کے اندرہ دیکھا تھا کہ ایک فنکشن جوز ہو رہا تھا جس کی مدہ سے آپ console Exception Handler کو رجسٹر کر سکتے تھے یہاں پہ فنکشن کا نام ہے Add Vector Exception Handler Add سے یہ پتہ چل رہے کہ آپ ایک سے زادہ Exception Handlers جو ہے ان کو Add کر سکتے ہیں اور دے یہاں پرامیٹرز ہے First Handler اور Vector Handler First Handler یہ ایک unsigned long ہے First Handler جب آپ یہ سپیسفائی کر رہے ہیں کہ یہ آپ کا حنڈلر ہے یہ سب سے پہلے execute ہوگا یا نہیں ہوگا First Handler کی جو value ہے اگر سے یہ non-zero ہے تو اس کا مطلب ہے یہ اندیگیٹ کرتا ہے آپ چاہتے ہیں کہ آپ کا جو Vector Handler ہے سب سے پہلے execute ہو جب windows پوری چین کو ٹریورس کرتی ہے تو چین کے اندر سب سے top کے اوپر آپ کا حنڈلر پڑھو اور اگر آپ نے اس کی value 0 رکھی ہے First Handler کی تو اس کس کے اندر جو window ہے windows operating سسٹم ہے وہ آپ کے function کو سب سے پہلے execute نہیں کرے کیس طرح سے execute کرے گا جس order کے اندر آپ کے functions add ہوئے اگر اس کے بعد کوئی اور ایسا function add ہو جاتا ہے جس کا بھی First Handler 0 ہے اور اور بھی add ہوتے ہیں تو جس order کے اندر وہ add ہو رہے ہیں اس order کے اندر وہ execute ہوگا اور یہاں پہلے آپ دیکھیں کہ یہ function جو ہے اگر fail ہو جاتا ہے تو یہ آپ کو کیا return کرتا ہے یہ آپ کو null return کرتا ہے null return کرنے کا مطلب ہے کہ یہ exception handler کو add نہیں کر سکا کسی وجہ سکا اور اگر یہ successful ہوتا تو اس کے اس میں جو اس نے value return کیا that is handle to the vector exception handler یعنی کہ یہ اس vector exception handler کو handle کرنے کے لیے بھی ایک handle چاہی ہے یعنی کہ windows کا ایک object ہے آپ دیکھا ہے windows کے جتے بھی رسوز ہیں وہ handles کی مدر سے جو ہے managed کیا جاتا ہے تو جو exception handler اس کا ایک handle ہے یہ handle return ہوتا آپ اس handle کو کہیں save کرنے کسی variable میں آگے چلکے اس کی ضرورت پر سکتی ہے اور آپ نے اگر اس exception handler کو now use نہیں کرنا کسی وجہ سے آپ نے اس کو remove کر دینا تو اس کے لیے جو آپ API use کر سکتے ہیں وہ remove vector exception handler اس API کی مدر سے آپ اس exception handler کو remove کر سکتے ہیں windows وہ کیسے پتہ چلے گا کس exception handler کو remove کرنے جو handle return ہوتا جس کو آپ نے save کر لیا کہیں وہ handle آپ اس API کو specify کریں گے اس function کو specify کریں گے اور آپ کا handleر جو ہے وہ remove ہو جائے اب ہم یہ دیکھتے ہیں کہ جو آپ کا vector handler ہے یعنی کہ آپ کا function ہے جو exception کو directly handle کرے گا اس کو آپ کے ستری کیسے لیکن ابھی ہم نے دیکھا ہے add vector exception handler کی API use کی مدر سے آپ اس کو add کر سکتے ہیں لیکن اگر آپ نے اس کو add کیا تو اس کو صحیح طرح سے لکھنا بھی ضروری ہے اور اس کے اندر کچھ code ہونی چاہی ہے جو کہ آپ کی اس exception کو handle کریں تو اس کو لکھنے کا کیا طریقہ کہا رہا ہے اس کو یہاں بھی دیکھتے ہیں یہاں بھی آپ دیکھ رہے ہیں کہ یہ جو vector handler آپ نے بنایا اس کا نام جو بھی آپ دکھیں اس کے ایک parameter ہے exception info یہ وہی structure ہے جو ہم نے previously exceptions کے اندر discuss کیا تھا اس structure کے اندر exception سے relevant information ہوتی ہے اس کی detail آپ msdn کے اندر دیکھ سکتے ہیں تو یہ exception pointer structure ہے اس کا ہم نے کچھ structure previously discuss بھی کیا تھا مزید detail msdn میں سے آپ کو مل سکتی ہیں اور اس کو آپ مزید ایک اور API ہے get exception information اس API کی مدل سے بھی اس function کو retrieve کر سکتے ہیں ان کے اس جب بھی کوئی exception ہوتی ہے اور پھر یہ جو آپ نے vector handler لکھا ہے اس vector handler کے اندر آپ کو درکلی یہ structure مل جاتا ہے اس structure کی اندر information پڑی ہوئی ہے اس کو use کر کے آپ اپنی اس exception کو handle کر سکتے ہیں اب جب آپ نے ایک vector exception handler لکھا ہے تو مزید آپ کو یہ پتا ہونا چاہیے کہ اس کو لکھنے کا کیا تریکہ ہے کیا ایسی چیزیں جو آپ نے کرنی اس کو لکھتے ہوئے اس کی code لکھتے ہوئے اور کیا ایسی چیزیں جو نہیں کرنی کن چیزوں کا خیال رکھنا سب سے important چیز یہ ہے کہ vector exception handler ہے وہ بالکل top of the chain پر ہوتا سب سے پہلے vector exception handler کو call کرنا windows نے تو اس لیے vector exception handler کو return کرنا اور فاری طور پہ جلدے جلدے return کرنا ضروری ہے اس کے لئے بہت زیادہ code نہیں ہونی چاہیے, minimal code ہونی چاہیے تاکہ وہ جلدی سے جلدی return کر سکے دوسی چیز اس میں سمجھنے والی یہ ہے کہ اس کے لئے کوئی blocking function نہیں ہونا چاہیے جس طرح ہم نے previously بھی دیکھا ہے sleep کا function ہے تو sleep کا function یہ block کر دیتا ہے execution sleep کا function نہیں ہونا چاہیے اور اس طرح کو synchronization کے constructs نہیں ہونے چاہیے جس کی وجہ سے execution block ہوتی ہے so blocking function کوئی نہیں ہونا چاہیے, because blocking function ہوگا execution indefinitely وہ رکھ جائے گی اس کے وجہ سے تو ایسا کچھ نہیں ہونا چاہیے, پھر اس کے لبا آپ نے دیکھا ہے کہ جو vectored exception hander ہے وہ آپ کے exception information کا جو structure ہے اس کو access کرنا ہے وہ ایک بڑا سے structure ہے تو اس کو بس minimal task perform کرنا چاہیے جلدی سے اس structure کو read کر کے اس میں سے information لے کے اور کچھ flags اور کچھ جو بھی inputs ہوگا ہے ان کو set کر کے اس کو جلد جلد return کرنے کی کوشش کرنی چاہیے پھر vectored exception hander جو وہ return کرے تو اس کی return type بھی ہے return type سے یہ پہلے چلتا ہے کہ اس نے chain کے اندر اگلی جو exception لے ان کو use کرنا ہے جو stack ہے وہ اس نے unwind ہونا نہیں ہونا وہ جو اس کی return type سے وہ بالکل exactly same ہے as compared to structured exception hander یہاں پر ہم دیکھ سکتے ہیں وہ جو دو important return type سے ہیں جن کو ہم نے پہلے use کیا تھا ایک تھی exception continue execution اور دوسری ہے exception continue search continue execution کا مطلب ہے کہ کوئی اور مزید hander execute نہیں ہوتا اور جس point سے execution جو ہے وہ exception hander پے جاتی ہے اسی point سے onwards execution جو ہے continue ہونا شروع ہو جاتی ہے stack کے اندر پڑا ہوا کوئی اور exception hander جو ہے وہ unwind نہیں ہوتا اس کو invoke نہیں کیا ہے اور دوسرا exception continue search یہ ہے کہ جو windows ہے وہ اپنی search جاری رکھے گا اس hander کے execute ہونے کے بعد جو stack ہے اس کو وہ unwind کرے گا unwinding اندر اگلہ exception hander دیکھے گا اگر وہ بھی کہتا ہے کہ continue search تو پھر اسے اگلہ دیکھ گا and so on پوری چین کو ہو سکتا ہے وہ traverse کرے