°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
¡¡¡¡¡¡¡¡Public¡¡Sub¡¡CalledMethod£¨£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Me¡£depth¡¡=¡¡1¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Try¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CalledCalledMethod£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Finally¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Me¡£depth¡¡=¡¡1¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Try¡¡
¡¡¡¡¡¡¡¡End¡¡Sub¡¡
¡¡¡¡¡¡¡¡Public¡¡Sub¡¡Method£¨£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Me¡£depth¡¡=¡¡0¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Try¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CalledMethod£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Finally¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Me¡£depth¡¡=¡¡0¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Try¡¡
¡¡¡¡¡¡¡¡End¡¡Sub¡¡
¡¡¡¡¡¡¡¡Public¡¡Function¡¡GetDepth£¨£©¡¡As¡¡Integer¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡Me¡£depth¡¡
¡¡¡¡¡¡¡¡End¡¡Function¡¡
End¡¡Class¡¡
Class¡¡Tests¡¡¡¡
¡¡¡¡¡¡¡¡Sub¡¡TestCallingExample£¨£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡cls¡¡As¡¡CallingExample¡¡=¡¡Nothing¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Try¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡cls¡¡=¡¡new¡¡CallingExample£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡cls¡£Method£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Catch¡¡¡¡exception1¡¡As¡¡Exception¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Try¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Console¡£WriteLine£¨¡¨Depth¡¡is¡¡£¨¡¨¡¡&¡¡cls¡£GetDepth£¨£©¡¡&¡¡¡¨£©¡¨£©¡¡
¡¡¡¡¡¡¡¡End¡¡Sub¡¡
¡¡¡¡¡¡¡¡Public¡¡Sub¡¡RunAll£¨£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡TestCallingExample£¨£©¡¡
¡¡¡¡¡¡¡¡End¡¡Sub¡¡
End¡¡Class¡¡
¡¡¡¡¡¡¡¡¡¡In¡¡this¡¡example£»¡¡each¡¡¡¡Finally¡¡keyword¡¡is¡¡associated¡¡with¡¡a¡¡Try¡¡block¡£¡¡You¡¡don¡¯t¡¡need¡¡to¡¡¡¡
associate¡¡a¡¡Catch¡¡block¡¡with¡¡a¡¡Try¡¡block¡¡if¡¡you¡¡are¡¡using¡¡¡¡Finally¡£¡¡If¡¡the¡¡Try¡¡block¡¡is¡¡entered£»¡¡¡¡
when¡¡the¡¡code¡¡leaves¡¡the¡¡Try¡¡block£»¡¡regardless¡¡of¡¡whether¡¡it¡¡ran¡¡successfully¡¡or¡¡threw¡¡an¡¡excep
tion£»¡¡the¡¡code¡¡within¡¡Finally¡¡is¡¡executed¡£¡¡Thus£»¡¡if¡¡stack¡¡unwinding¡¡occurs£»¡¡it¡¡is¡¡possible¡¡to¡¡reset¡¡¡¡
or¡¡assign¡¡state¡¡to¡¡a¡¡consistent¡¡value¡¡before¡¡the¡¡exception¡¡is¡¡processed¡¡elsewhere¡£¡¡
¡öNote¡¡¡¡When¡¡the¡¡¡¡Finally¡¡block¡¡is¡¡called£»¡¡you¡¡don¡¯t¡¡know¡¡if¡¡it¡¡is¡¡called¡¡due¡¡to¡¡an¡¡exception¡¡or¡¡successful¡¡¡¡
code¡¡execution¡£¡¡Thus£»¡¡you¡¡shouldn¡¯t¡¡assume¡¡that¡¡Finally¡¡is¡¡called¡¡because¡¡an¡¡exception¡¡was¡¡thrown¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡148¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
126¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡5¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡IN¡¡G¡¡¡¡¡¡AB¡¡OU¡¡T¡¡¡¡¡¡V¡¡I¡¡SU¡¡A¡¡L¡¡¡¡¡¡B¡¡AS¡¡IC¡¡¡¡¡¡E¡¡X¡¡C¡¡E¡¡P¡¡TI¡¡ON¡¡¡¡¡¡H¡¡AN¡¡D¡¡L¡¡IN¡¡G¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Sandboxing¡¡Your¡¡Code¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡sandboxing¡¡technique¡¡is¡¡similar¡¡to¡¡playing¡¡with¡¡an¡¡Etch¡¡A¡¡Sketch£»¡¡in¡¡that¡¡you¡¡attempt¡¡to¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡build¡¡a¡¡state£»¡¡and¡¡if¡¡you¡¡make¡¡a¡¡mistake£»¡¡you¡¡can¡¡throw¡¡the¡¡state¡¡away¡£¡¡This¡¡requires¡¡that¡¡you¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡separate¡¡your¡¡code¡¡into¡¡three¡¡distinct¡¡steps£º¡¡declaration£»¡¡manipulation£»¡¡and¡¡integration¡£¡¡Figure¡¡5¡7¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡illustrates¡¡the¡¡three¡¡steps¡¡in¡¡sandboxing¡¡your¡¡code¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡1¡£¡¡Declaration£º¡¡Each¡¡variable¡¡is¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡declared¡¡and¡¡assigned¡¡a¡¡default¡¡state¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Function¡¡Separated£¨£©¡¡As¡¡SeparateSteps¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡that¡¡will¡¡not¡¡generate¡¡an¡¡exception¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡cls¡¡As¡¡SeparateSteps¡¡=¡¡Nothing¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡cls¡¡=¡¡New¡¡SeparateSteps£¨£©¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡2¡£¡¡Manipulation£º¡¡Each¡¡variable¡¡is¡¡manipulated¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡cls¡£PossibleExceptionMethod£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡using¡¡methods¡¡to¡¡create¡¡a¡¡state¡¡that¡¡does¡¡not¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡cls¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡alter¡¡anything¡¡outside¡¡the¡¡method¡£¡¡The¡¡variables¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Function¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡may¡¡reference¡¡the¡¡global¡¡state£»¡¡but¡¡not¡¡change¡¡it¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡3¡£¡¡Integration£º¡¡Once¡¡the¡¡state¡¡has¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡been¡¡modified£»¡¡an¡¡integration¡¡into¡¡the¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡bigger¡¡system¡¡can¡¡occur¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Figure¡¡5¡7¡£¡¡Sandboxing¡¡your¡¡code¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Figure¡¡5¡7¡¡illustrates¡¡one¡¡way¡¡of¡¡performing¡¡a¡¡sandboxing¡¡operation£»¡¡but¡¡there¡¡are¡¡many¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡other¡¡possible¡¡implementations¡£¡¡In¡¡each¡¡of¡¡the¡¡different¡¡implementations£»¡¡the¡¡objective¡¡is¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡same£º¡¡you¡¡want¡¡to¡¡perform¡¡the¡¡operations¡¡that¡¡could¡¡cause¡¡an¡¡exception¡¡apart¡¡from¡¡the¡¡main¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡code¡£¡¡Then¡¡if¡¡you¡¡do¡¡have¡¡an¡¡exception£»¡¡it¡¡will¡¡be¡¡localized¡¡to¡¡the¡¡separate¡¡code¡£¡¡When¡¡the¡¡stack¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡unwinds£»¡¡the¡¡other¡¡code¡¡won¡¯t¡¡be¡¡corrupted¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡öNote¡¡¡¡The¡¡rule¡¡of¡¡thumb¡¡with¡¡sandboxing¡¡your¡¡code¡¡is¡¡to¡¡keep¡¡all¡¡of¡¡the¡¡code¡¡manipulations¡¡that¡¡could¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡generate¡¡an¡¡exception¡¡separate¡¡from¡¡any¡¡existing¡¡state¡¡that¡¡could¡¡be¡¡corrupted¡£¡¡Once¡¡the¡¡manipulations¡¡have¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡been¡¡carried¡¡out£»¡¡you¡¡integrate¡¡the¡¡objects¡¡into¡¡the¡¡global¡¡state¡¡using¡¡method¡¡calls¡¡that¡¡are¡¡extremely¡¡unlikely¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡to¡¡generate¡¡exceptions¡£¡¡For¡¡those¡¡situations¡¡when¡¡you¡¡must¡¡manipulate¡¡existing¡¡state£»¡¡use¡¡a¡¡¡¡Finally¡¡handler£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡so¡¡that¡¡the¡¡previous¡¡existing¡¡state¡¡can¡¡be¡¡re¡created¡¡if¡¡necessary¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Filtering¡¡Exceptions¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡In¡¡all¡¡of¡¡the¡¡examples¡¡presented¡¡so¡¡far¡¡in¡¡this¡¡chapter£»¡¡the¡¡Catch¡¡statement¡¡used¡¡the¡¡Exception¡¡type£º¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Catch¡¡exception1¡¡As¡¡Exception¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Exception¡¡will¡¡catch¡¡every¡¡exception¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡149¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡5¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡AR¡¡N¡¡IN¡¡G¡¡¡¡¡¡AB¡¡O¡¡U¡¡T¡¡¡¡¡¡V¡¡I¡¡SU¡¡A¡¡L¡¡¡¡¡¡B¡¡AS¡¡IC¡¡¡¡¡¡E¡¡X¡¡CE¡¡PT¡¡I¡¡ON¡¡¡¡¡¡HA¡¡N¡¡D¡¡L¡¡IN¡¡G¡¡127¡¡
¡¡¡¡¡¡¡¡¡¡In¡¡Figure¡¡5¡3£»¡¡the¡¡IDE¡¡caught¡¡an¡¡exception£»¡¡referencing¡¡NullReferenceException£»¡¡which¡¡is¡¡¡¡
a¡¡specific¡¡type¡¡of¡¡exception¡£¡¡When¡¡you¡¡use¡¡it¡¡in¡¡a¡¡Catch¡¡statement£»¡¡you¡¡will¡¡catch¡¡only¡¡null¡¡refer
ence¡¡exceptions¡£¡¡
¡¡¡¡¡¡¡¡¡¡By¡¡specializing¡¡the¡¡exception£»¡¡you¡¡have¡¡the¡¡ability¡¡to¡¡filter¡¡which¡¡exception¡¡you¡¡want¡¡to¡¡¡¡
catch¡£¡¡For¡¡example£»¡¡NotSupportedException¡¡will¡¡catch¡¡only¡¡instances¡¡of¡¡NotSupportedException¡¡¡¡
exceptions¡£¡¡Here¡¡is¡¡an¡¡example£º¡¡
Try¡¡¡¡
¡¡¡¡¡¡¡¡Throw¡¡New¡¡NotSupportedException£¨¡¨There¡¡is¡¡no¡¡code¡¨£©¡¡
Catch¡¡ex¡¡As¡¡NotSupportedException¡¡
End¡¡Try¡¡
¡¡¡¡¡¡¡¡¡¡If¡¡the¡¡code¡¡within¡¡the¡¡Try¡¡block¡¡threw¡¡an¡¡instance¡¡of¡¡Exception£»¡¡the¡¡Catch¡¡block¡¡would¡¡not¡¡¡¡
trigger£»¡¡because¡¡the¡¡Catch¡¡block¡¡was¡¡looking¡¡for¡¡a¡¡specific¡¡exception¡¡type¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡Exception¡¡types¡¡can¡¡be¡¡bined¡¡to¡¡provide¡¡specific¡¡filtering¡¡capabilities¡£¡¡The¡¡specific¡¡¡¡
exception¡¡type¡¡should¡¡be¡¡the¡¡first¡¡exception¡¡after¡¡the¡¡Try¡¡block£»¡¡as¡¡in¡¡this¡¡example£º¡¡
Try¡¡¡¡
¡¡¡¡¡¡¡¡'¡¡¡£¡¡¡£¡¡¡£¡¡
Catch¡¡ex1¡¡As¡¡NotSupportedException¡¡
¡¡¡¡¡¡¡¡¡¡'¡¡
Catch¡¡ex2¡¡As¡¡Exception¡¡
¡¡¡¡¡¡¡¡¡¡'¡¡
End¡¡Try¡¡
¡¡¡¡¡¡¡¡¡¡By¡¡bining¡¡multiple¡¡exception¡¡filters£»¡¡you¡¡don¡¯t¡¡need¡¡to¡¡figure¡¡out¡¡which¡¡kind¡¡of¡¡excep
tion¡¡is¡¡being¡¡thrown¡£¡¡For¡¡example£»¡¡without¡¡the¡¡filtering¡¡capabilities¡¡of¡¡a¡¡Catch¡¡block¡¡to¡¡catch¡¡¡¡
NotSupportedException¡¡exception¡¡types£»¡¡you¡¡would¡¡need¡¡to¡¡write¡¡this¡¡code£º¡¡
Try¡¡¡¡
¡¡¡¡¡¡¡¡Throw¡¡New¡¡NotSupportedException£¨¡¨There¡¡is¡¡no¡¡code¡¨£©¡¡
Catch¡¡ex¡¡As¡¡Exception¡¡
¡¡¡¡¡¡¡¡If¡¡ex¡¡Is¡¡NotSupportedException¡¡Then¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡'¡£¡¡¡£¡¡¡£¡¡
¡¡¡¡¡¡¡¡Else¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Throw¡¡ex¡¡
¡¡¡¡¡¡¡¡End¡¡If¡¡
End¡¡Try¡¡
¡¡¡¡¡¡¡¡¡¡Table¡¡5¡1¡¡lists¡¡mon¡¡exception¡¡types¡¡in¡¡the¡¡System¡¡namespace¡¡that¡¡you¡¡can¡¡throw¡¡or¡¡¡¡
can¡¡be¡¡thrown¡£¡¡There¡¡are¡¡many¡¡more¡¡exceptions£»¡¡and¡¡you¡¡can¡¡even¡¡generate¡¡your¡¡own¡¡excep
tions¡¡by¡¡subclassing¡¡¡¡Exception¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡150¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
128¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡5¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡IN¡¡G¡¡¡¡¡¡AB¡¡OU¡¡T¡¡¡¡¡¡V¡¡I¡¡SU¡¡A¡¡L¡¡¡¡¡¡B¡¡AS¡¡IC¡¡¡¡¡¡E¡¡X¡¡C¡¡E¡¡P¡¡TI¡¡ON¡¡¡¡¡¡H¡¡AN¡¡D¡¡L¡¡IN¡¡G¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Table¡¡5¡1¡£¡¡¡¡mon¡¡Exception¡¡Types¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Exception¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Description¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Exception¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Plain¡vanilla¡¡exception£»¡¡a¡¡general¡¡container¡¡for¡¡all¡¡exceptions¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡When¡¡you¡¡get¡¡one¡¡of¡¡these¡¡exceptions£»¡¡look¡¡at¡¡the¡¡Message¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡property¡¡for¡¡the¡¡exact¡¡details¡£¡¡If¡¡you¡¡throw¡¡this¡¡type¡¡of¡¡excep
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡tion£»¡¡it¡¡is¡¡important¡¡to¡¡supply¡¡an¡¡easy¡to¡understand¡¡string¡¡to¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡the¡¡exception¡¡constructor¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ArgumentException¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Thrown¡¡if¡¡you¡¡call¡¡a¡¡method¡¡and¡¡one¡¡of¡¡the¡¡arguments¡¡is¡¡not¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡valid¡£¡¡Typically£»¡¡in¡¡the¡¡Message¡¡property¡¡you¡¡can¡¡find¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡problem¡¡with¡¡the¡¡arguments¡£¡¡If¡¡this¡¡exception¡¡is¡¡thrown£»¡¡it¡¡is¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡because¡¡the¡¡contents¡¡of¡¡the¡¡argument¡¡are¡¡wrong¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ArgumentNullException¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Thrown¡¡if¡¡you¡¡call¡¡a¡¡method¡¡where¡¡one¡¡of¡¡the¡¡arguments¡¡is