ºìÁªLinuxÃÅ»§
Linux°ïÖú

¹ØÓÚjava³ÌÐòÒì³£´¦Àí£¨½²Ò壩

·¢²¼Ê±¼ä:2006-05-03 18:31:19À´Ô´:ºìÁª×÷Õß:ºãÉÆϲ
µÚ16½²£ºÒì³£´¦Àí
16.1¡¢¼ò½é£º
Òì³£ÊdzÌÐòÖ´ÐÐʱÓöµ½µÄÈκδíÎóÇé¿ö»òÒâÍâÐÐΪ¡£
ÒÔÏÂÕâЩÇé¿ö¶¼¿ÉÒÔÒý·¢Òì³££ºÄúµÄ´úÂë»òµ÷ÓõĴúÂ루Èç¹²Ïí¿â£©ÖÐÓдíÎ󣬲Ù×÷ϵͳ×ÊÔ´²»¿ÉÓ㬹«¹²ÓïÑÔÔËÐпâÓöµ½ÒâÍâÇé¿ö£¨ÈçÎÞ·¨ÑéÖ¤´úÂ룩£¬µÈµÈ

¡¶Exception Handling for C++¡·¹ØÓÚÒì³£´¦ÀíÂÛÎÄ£¬
Ïò¶ÔÏóÖÐÿÔö¼ÓÒ»¸öÀ࣬¶¼¿ÉÄÜ°üº¬Ò»Ð©´íÎó¡£
JavaʹÓúÍC++ÀàËƵÄÒì³£´¦Àí
1¡¢´¦Àí´íÎóµÄ·½·¨ÓкܶàÁ÷Ðз½·¨
2¡¢Ò»°ã·½·¨ÊǰѳÌÐò´¦Àí´úÂë¶Î·ÖÉ¢µ½ÏµÍ³´úÂëÖУ¬ÔÚ¿ÉÄÜ·¢Éú´íÎóµÄµØ·½´¦Àí´íÎó
Óŵ㣺±ãÓÚ³ÌÐòÔ±Äܹ»ÌõÀíµÄ¿´µ½³ÌÐòÖÐÒì³£µÄ´¦Àí
ȱµã£ºÒì³£´¦Àí³ÌÐò¡°½ÁÂÒ¡±´úÂ룬³ÌÐòÔ±ºÜÄѹØÐijÌÐò±¾ÉíÄÜ·ñÕý³£Íê³É¹¦ÄÜ£¬¶øÖ»¹ØÐÄÁËÐÔÄÜ¡£
3¡¢³£¼ûÒ쳣ʵÀý°üÀ¨£ºÊý×éϱêÔ½½ç£¬Ëã·¨Òç³ö£¨³¬³öÊýÖµ±í´ï·¶Î§£©£¬³ýÊýΪÁ㣬ÎÞЧ²ÎÊý¡¢ÄÚ´æÒç³ö
Òì³£´¦Àí¹¦ÄÜ£ºÖ÷Òª´¦ÀíһЩͬ²½Òì³££¨³ýÊýΪ0£©£¬²»ÒË´¦ÀíһЩÒ첽ʼþ£¨Disk I/O End¡¢ÍøÂçÐÅÏ¢µ½´ï¡¢µã»÷Êó±ê¡¢Çû÷¼üÅÌ£©ÕâЩ×îºÃʹÓÃjavaʼþ¼àÌý¡£
Òì³£´¦Àí³ÌÐò£ºÄܹ»ÈÃϵͳÔÚ³öÏÖÒì³£µÄÇé¿öÏ»ָ´¹ýÀ´µÄ³ÌÐò
ʹÓÃÒì³£´¦ÀíÇé¿ö£ºÒì³£Õï¶ÏÓëÒì³£´¦Àí²»ÔÚͬһ¸öλÖÃÏÂʱʹÓÃÒì³£´¦Àí³ÌÐò£¨ÈôÓû§Ò»Ö±Í¨¹ý¼üÅÌÓë³ÌÐòͨ»°£¬ÄÇô¾Í²»ÄÜʹÓô¦Àí¼üÅÌÊäÈë´¦Àí£©
ʹÓÃÒì³£µÄ×¢ÒâÊÂÏ
1¡¢ Òì³£´¦ÀíλÖÃÓëÒì³£·¢ÉúλÖñØÐ벻ͬ£¨ÈôÒ»¸ö³ÌÐòÄܹ»´¦Àí×Ô¼ºµÄ´íÎó£¬ÄÇô¾Í²ÉÓô«Í³µÄ´íÎó´¦Àí·½Ê½½øÐоֲ¿´¦Àí£©
2¡¢ Òª±ÜÃâʹÓÃÒì³£´¦ÀíÀ´´úÌæ´íÎó´¦Àí£¬ÈôÕâÑù¾Í»á½µµÍ³ÌÐòµÄÇåÎúÐÔ¡£
3¡¢ ¾¡¹Ü¿ÉÒÔʹÓÃÒì³£´¦ÀíÀ´´úÌæ´íÎó´¦Àí£¬µ«»á½µµÍÐÔÄÜ
4¡¢ Òì³£´¦Àí»áÕ¼ÓóÌÐòµÄ¸ñÍâÖ´ÐÐʱ¼ä
5¡¢ Òì³£´¦ÀíÄܹ»Ìá¸ß³ÌÐòµÄÈÝ´íÐÔ
6¡¢ ³ÌÐòԱʹÓÃJAVA±ê×¼µÄÒì³£´¦Àí¹¦ÄÜÀ´´úÌæËûÃǵÄרÓ÷½·¨£¬¿ÉÒÔÔÚ´óÐÍÏîÄ¿ÖÐÌá¸ß³ÌÐòµÄÇåÎúÐÔ
7¡¢ Òì³£Êdz¬ÀàException¼Ì³ÐµÄ×ÓÀ࣬Ö÷ÒªÈçºÎ´¦Àí¡°Î´ÆË»ñµÄÒì³£¡±£¬ÎÞ·¨Ô¤ÁϵÄÒì³£¡£
8¡¢ Òì³£´¦ÀíÔÚjavaÖÐÔ­Àí£º

Òì³£´¦ÀíÓÐMethodµ÷ÓÃÕߵĵ÷ÓÃÕß»òÕßMethodµ÷ÓÃÕßÀ´´¦Àí£¬
9¡¢ Òì³£´¦ÀíÊÊÓ÷ֱ𿪷¢µÄ×é¼þϵͳ
10¡¢ ÒòΪһЩ³ÌÐòԱʹÓò»Ö§³ÖÒì³£´¦ÀíÓïÑÔ±à³Ìʱ£¬ÍùÍùÍÏÑÓ»òÍü¼Ç´íÎó´¦Àí³ÌÐòµÄ±àд£¬¹Ê£¬JavaÇ¿ÖƳÌÐòÔ±´ÓÏîÄ¿Ò»¿ªÊ¼¾Í×ÅÊÖ½øÐÐÒì³£´¦Àí£¬³ÌÐòÔ±±ØÐëͶÈëºÜ´ó¾«Á¦°ÑÒì³£´¦ÀíµÄ²ßÂÔÈںϵ½Èí¼þ²úÆ·ÖÐ
11¡¢ ×îºÃÔÚ½øÐÐϵͳÉè¼ÆÊǾͰÑÒì³£´¦ÀíÈÚºÏÔÚϵͳÖУ¬ÈôϵͳһʵÏÖ£¬¾ÍºÜÄÑÌí¼ÓÒì³£´¦Àí¹¦ÄÜ

16.2ÈçºÎʹÓÃÒì³£´¦Àí£º

ÔÚÒÔÏÂÇé¿öÏÂʹÓÃÒì³£´¦Àí£º

1¡¢ µ±·½·¨ÒòÎÞ·¨¿ØÖƵÄÔ­Òò¶ø²»ÄÜʵÏÖÆ书ÄÜʱ£»
2¡¢ ´¦ÀíÀ´×Ô³ÌÐò×é¼þÕûÌåÒì³££¬ÕâЩ³ÌÐò×é¼þ²»ÊÊÒËÖ±½Ó´¦ÀíÒì³£
3¡¢ ÔÚ´óÐÍÏîÄ¿ÖУ¬¶ÔÓÚÿ¸öÏîÄ¿¶¼ÒÔÒ»Öµķ½Ê½½øÐдíÎó´¦Àí
4¡¢ ÔÚÀà¿âÖгöÏÖÿһ¸öÒì³££¬¶¼ÐèÒªÒ»¸öΩһ´íÎó´¦Àí£¬ÔÚÀà¿âÖÐʹÓÃÒì³£´¦ÀíºÜºÏÊÊ

16.3 ÆäËûµÄ´íÎó´¦Àí¼¼Êõ£º

´¦ÀíÒì³£µÄ·½·¨£º
1¡¢ ÔÚ³ÌÐò¿ÉÒÔºöÂÔÒì³££¨ºöÂÔÒì³£ÔÚ´óÐ͹«ÓÃÈí¼þºÍ¹Ø¼ü´¦ÀíÈí¼þ¿ÉÄܻᵼÖÂÖØ´óµÄÈí¼þÆÆ»µ£¬¶ø×Ô¼ºÓõÄÈí¼þ£¬Í¨³£¿ÉºöÂÔһЩ´íÎó£©
2¡¢ Óöµ½Ò쳣ʱ£¬³ÌÐò¿ÉÒÔ¸ù¾ÝÌáʾÀ´ÖÕÖ¹ÔËÐУ¨µ«ÊÇ´¦Àí¹Ø¼üÈÎÎñÊǾø¶Ô²»¿ÉÒÔ²ÉÓ㬡´Éñ5·µ»Ø²ÖοØϵͳ¡µ?863ÏîÄ¿¡££©

16.4 javaÒì³£´¦ÀíµÄ»ù´¡£º

javaµÄÒì³£´¦ÀíÊÊÓÃÓÚÔÚÒ»¸ö·½·¨ÖÐÄܹ»¼ì²â³ö´íÎóµ¥²»ÄÜ´¦Àí´íÎóµÄÇé¿ö£¬ÕâÑù·½·¨½«Å׳öÒ»¸öÒì³££¨JAVAÎÞ·¨±£Ö¤¡°´æÔÚ¡±µÄÒì³£´¦Àí³ÌÐòÄܹ»´¦ÀíijÖÖÒì³££¬Èô¡°´æÔÚ¡±£¬¾Í¡°²¶»ñ¡±Òì³££¬²¢´¦Àí¡°Òì³£¡±£¬ÈçÕÒ²»µ½£¬ÄÇô£º

ÃüÁîÐÐAPP/¿ØÖÆ̨APP£¨²»»ùÓÚGUI£©£¬µ±Òì³£²»Äܱ»¡°²¶»ñ¡±£¬ÄÇô¸Ã³ÌÐò»áÔËÐÐĬÈÏÒì³£´¦Àí³ÌÐò£¬Í˳öJAVA£¬ÈôApplet»ò»ùÓÚGUIµÄ APP£¬µ±Ò»¸öÒ쳣δ±»¡°²¶»ñ¡±£¬GUIÔÚÔËÐÐĬÈÏÒì³£´¦Àí³ÌÐòÒÀÈ»»áÏÔʾ£¬¶øÇÒÓû§Ê¹ÓõÄGUI´¦ÓÚÒ»¸ö²»Îȶ¨µÄ״̬£©
£©
JAVA´úÂëÖУº1¡¢¿ÉÄܳöÏÖÒì³£µÄ´úÂë-----{ ¡­¡­ try{Å׳öÒ»¸öÒì³£}-----³ÌÐò¿é ¡­¡­catch1{Òì³£´¦Àí³ÌÐò1}£»¡­¡­catch100 {Òì³£´¦Àí³ÌÐò100}£» finally{ÎÞÀàÊÇ·ñ³öÏÖÒì³£¶¼Ö´ÐеijÌÐò}
1¡¢ ÈôtryÅ׳öException£¬AppÑ°ÕÒÔÚCatch1~100Ñ°ÕÒºÏÊÊÒì³£´¦Àí³ÌÐò£¬ÈôÕÒµ½£¬Ö´ÐÐCATCH{}´úÂ룬ûÓУ¬Ö´ÐÐ×îºóÒ»¸öcatch{}ºó´úÂë
2¡¢ ÈôtryδÅ׳öException£¬¾ÍÖ´ÐÐÖ´ÐÐ×îºóÒ»¸öcatch{}ºó´úÂë¡£

3¡¢ throws×Ó¾äÀ´Å׳öÖ¸¶¨µÄÒì³££¬Òì³£Å׳öµã£¨throws Óï¾äλÖá¢try{}³ÌÐò¿é¡¢try()³ÌÐò¿éÖÐÖ±½ÓºÍ¼ä½Óµ÷Óõķ½·¨ÖУ©

4¡¢ java²ÉÓÃÖÕÖ¹·½Ê½Òì³£´¦Àí£¬²»Êǻָ´·½Ê½µÄÒì³£´¦Àí

5¡¢ ·¢ÉúÒ쳣ʱ£¬Òì³£ÖÜΧÐÅÏ¢£¨Å׳ö¶ÔÏó±¾ÉíÀàÐÍ£©-------------Òì³£´¦Àí³ÌÐò

12.5Ò»¸öÒì³£´¦ÀíµÄ¼òµ¥ÊµÀý£º³ýÊýΪ0

ÐèÇó£ºÊ¹ÓÃÒ»¸öСӦÓóÌÐò£¬Íê³ÉÁ½ÊýÏà³ýµÄ¼ÆËã

·ÖÎö£º
ÎÒÃÇʹÓÃÓж¥ÏòÏ£¬Öð²½Ç󾫵ķ½·¨£º
1¡¢Êײ½ÎÒÃÇÒ»°ãÔÚ³ÌÐòÖÐÏÈ´¦ÀíÎÒÃÇÍê³ÉÒì³£´¦ÀíµÄÀ࣬Íê³ÉÒì³£´¦ÀíµÄ¹¦ÄÜ£¬ÒòΪ¿ÉÄܳýÊýΪ0ÊÇ»á³öÏÖÒì³££¬ÎÒÃDzéÕÒjava.lang°üÖи÷¸ö ExceptionÀ࣬·¢ÏÖRuntimeExceptionÀ༯ºÏÖеÄArithmeticException¿ÉÒÔ´¦ÀíÔËËãÒì³££¬ÎÒÃǾÍÈÃÒ»¸ö DivideByZeroException£¨¼Ì³ÐÓÚArithmeticException£©¸üÌØÊâÀàÀ´×¨ÃÅ´¦Àí³ýÊýΪÁãµÄÒì³£¡£ÔÚDivideByZeroException£¨£©Öе÷ÓÃsuper£¨£©£¨×¨Ãųõʼ»¯´«Èç²ÎÊýµÄ·½·¨£©À´´«ÈçÒì³£´¦Àíºó¶ÔÏóÃèÊö£¨³õʼ״̬£©
2¡¢ µÚÒ»²½£¬´´½¨Ò»¸öAppletÀàÍê³ÉÍê³ÉÁ½ÊýÏà³ýµÄ¼ÆËã
3¡¢ µÚ¶þ²½£º´¦Àí¶ÔÏóÓë·½·¨£ºÉùÃ÷4¸öGUI×é¼þ¶ÔÏóºÍ1¸öÓÃÓÚ´æ´¢¼ÆËã½á¹û(double)µÄºÍ2¸ö±»³ýÊýÓë³ýÊý»ù±¾ÀàÐÍ£¨int£©

A¡¢ ³õʼ»¯¶ÔÏó·½·¨init()
B¡¢ ´¦Àíµ±³ýÊý¼üÅÌÊäÈëºó£¬´¥·¢Ê¼þ½øÐмÆËãµÄ·½·¨£¨·µ»ØÅжϣ©action()

a¡¢ÒòΪÔÚ´Ë·½·¨ÖУ¬ÓпÉÄܳöÏÖ³ýÊýΪ0µÄ¿ÉÄÜ£¬¶øÇÒÔÚ¼ÆËãÖвŻسöÏÖ´íÎ󣬴íÎó³öÏÖºóÐèÒª½øÐд¦ÀíÒì³££¬ÄÇôÎÒÔÚÆäÖÐʹÓÃtry{}³ÌÐò¿éÏȵ÷Ó÷½·¨ quotient½øÐмÆËãresult=quotient(number1,number2),1¡¢È»ºóÈÃquotient£¨£©·½·¨£¨Ê¹Ó÷½·¨ÌåÖÐµÄ throws Ex{}Å׳öÒì³£³ÌÐò¿é---´ËΪÉî²ãǶÌ×£©Å׳öÒì³£(ÒòΪ´Ë´¦ÀíÐÅÏ¢±È½Ï¼òµ¥£¬µ«´æÔÚÐÅÏ¢´«µÝ£¬ÎÒÃÇÈÃÆäÍϺó´¦Àí)ÎÒÃÇûÓÐÏÔʽÔÚtry()¿éÖÐÅ׳öÒì³£¡£ÓÐÅ׳öÒì³£¾ÍÓлñµÃÒì³££¬Ê¹ÓÃcatch{}³ÌÐò¿éÍê³É£¬a)¡¢ÔÚquotient£¨£©ÖУ¨Êµ¼ÊÉî²ãǶÌ×throws Ex{}Å׳öÒì³£³ÌÐò¿é£©£¬µ±³ýÊý=0ʱ£¬¾Íµ÷ÓÃthrow×Ӿ䴴½¨²¢Å׳öÒ»¸önew catch{}¡°²¶»ñ¡±£¨Ö¸¶¨Æ¥ÅäÀàÐÍDivideByZeroException£© quotient£¨£©Å׳öÒì³£ÐÅÏ¢£¨DivideByZeroException£©£¬¶ø½ÓÊÜ´ËÐÅÏ¢ÊÇÓÉexception½ÓÊÕ£¬²¢µ÷ÓÃtoString ()·½·¨°Ñexceptionת»»³É×Ö·û´®£¬Ê¹ÓÃshowStatus(exception.toString()); ÏÔʾ³öÀ´£¨ÒòΪÐèÇóÒªÇóÏÔʾÒì³££©¡£b)¡¢Èôµ±³ýÊý£¡=0ʱ£¬ÄÇô¾Í²»Å׳öÒì³££¬È»ºó½«³ÌÐò·µ»Øµ½try()³ÌÐò¿éÖÐquotient£¨£©·½·¨µ÷Óô¦£¬½Ó×ÅʹÓà showStatus()·½·¨ÏÔʾËãʽºÍ½á¹û£¨number1+¡±/¡±+number2+¡±=¡±+Double.toString(result)£©³ÌÐò½«Ìø¹ýcatch{}³ÌÐò¿é£¬action£¨£©·½·¨½«Ö´ÐÐreturn true

×¢Ò⣺µ±quotient£¨£©Å׳öÒì³£ÐÅÏ¢£¨DivideByZeroException£©Ê±£¬quotient£¨£©ÖÕÖ¹Ö´ÐУ¬ÕâÑù»á¶ÔËùÓжÔÏó£¨4+2 +1£©ÉèÖñê¼Ç£¬ÓÃÓÚÎÞÓõ¥Ôª»ØÊÕ´¦Àí£»²¢ÔÚÎÞÓõ¥Ôª»ØÊÕ´¦Àí֮ǰ£¬»¹½«ÔËÐÐÕâЩ¶ÔÏóµÄÖÕÖ¹º¯Êý¡£Èç¹ûÅ׳öÒì³££¬ÄÇôtryÔÚ³ÌÐò¿éÖ´ÐÐ showStatus֮ǰÖÕÖ¹¡£ÈôtryÅ׳öÒ쳣֮ǰ×Ô¶¯´´½¨Á˶ÔÏó£¬ÄÇô»á¶ÔÕâЩ¶ÔÏóÉèÖñê¼Ç£¬ÓÃÓÚÎÞÓõ¥Ôª»ØÊÕ£¬Í¬Ê±ÔÚ»ØÊÕ֮ǰ£¬»¹½«ÔËÐÐÕâЩ¶ÔÏóµÄÖÕÖ¹º¯Êý¡£
b¡¢ÔÚaction£¨£©·½·¨ÖÐҪעÒâ´¦Àí£ºÔÚTextFieldÖеÚ2¸öÊäÈë½áÊø²¢°´Ï»سµºó£¬³ýÊýÓ¦¸ÃÔõÑù»ñµÃÊäÈëµÄÊý×Ö(number1= Integer.parseInt(input1.getText))£¬Îı¾¿òÈçºÎ»ñµÃºÏ·¨µÄÎı¾£¨setText()£©.Ò²°üÀ¨Åжϣ¨if (event.target==input2)£©

C¡¢ ÒòΪquotient£¨£©·½·¨ÈÎÎñ±È½Ï¶à£¬ËùÒÔÒª½«´Ë·½·¨µ¥¶ÀÓëactionÀ´´¦Àí£¬¶øÏÔʾ³ÌÐòµÄÇåÎúÐԺͿɶÁÐÔ£¬Í¬Ê±¿ÉÒÔÌá¸ßÖ´ÐÐЧÂʺÍÎȶ¨ÐÔÄÜ¡£

ÀàͼÓëÁ÷³Ìͼ£º

´úÂ룺
//Fig 16.4: DivideByZeroException.java
//W.Qiang
//2005.J.6
public class DivideByZeroException extends ArithmeticException{
public DivideByZeroException()
{
super(¡°Attempted to divide by zero¡±);
}
}
import java.awt.*;
import java.awt.event.*
import java.applet.Applet;

public class DivideByZeroTest extends Applet
{
Label prompt1,prompt2;
TextField input1,input2;
Int number1,number2;
Double result;

public void init()
{
prompt1=new Label (¡°ÊäÈë±»³ýÊý¡±);
input1=new TextField(10);
prompt2=new Label (¡°ÊäÈë³ýÊý²¢°´Ï»سµ¡±);
input2=new TextField(10);
add (prompt1);
add (input1);
add (prompt2);
add (input2);
}

public boolean action (Event event,Object obeject )
{
if (event.target==input2)
{
number1=Integer.parseInt(input1.getText());
input1.setText(¡°¡±);
number2=Integer.parseInt(input2.getText());
input2.setText(¡°¡±);

try {
result=quotient(number1,number2);
showStatus(number1+¡±/¡±+number2+¡±=¡±+Double.toString(result));
}

catch(DivideByZeroException exception) {
showStatus(exception.toString());
}
}
return true;
}
public double quotient£¨int numerator,int denominator£©throws DivideByZeroException
{
if (denominator==0)
throw new DivideByZeroException ();
else (denominator!=0)
return(double) numerator / denominator ;
}
}

12.6 try³ÌÐò¿é£º
try{
¡­¡­}
catch£¨£©{
¡­¡­.}
finally{ ¡­¡­}
tryºóÃæ¸ú0~¶à¸öcatch³ÌÐò¿é
ÈôtryÅ׳öException£¬AppÑ°ÕÒÔÚCatch1~100Ñ°ÕÒºÏÊÊÒì³£´¦Àí³ÌÐò£¬ÈôÕÒµ½£¬Ö´ÐÐCATCH{}´úÂ룬ûÓУ¬Ö´ÐÐ×îºóÒ»¸öcatch{}ºó´úÂë
ÈôtryδÅ׳öException£¬¾ÍÖ´ÐÐÖ´ÐÐ×îºóÒ»¸öcatch{}ºó´úÂë¡£
finally{ÎÞÀàÊÇ·ñ³öÏÖÒì³£¶¼Ö´ÐеijÌÐò,±ØÐëÍê³É×ÊÔ´Êͷż´ÖÕÖ¹º¯Êýµ÷Ó㬿ɱÜÃâ×ÊԴй¶}
16.7 Å׳öÒì³££º
throw ×Ó¾äÓÃÀ´Å׳öÒì³££¬¶øthrows×Ó¾äÓÃÀ´Ö¸¶¨Òì³£
throw µÄ²Ù×÷ÊýÊÇThrowableËùÓÐÅÉÉúÀ࣬ThrowableµÄÖ±½Ó×ÓÀàÊÇException(Òì³££¬ÓÉÓ¦²¶»ñµÄÎÊÌâÒýÆð£¬Ó¦½øÐд¦Àí)ÓëError£¨ÖØ´óϵͳÎÊÌ⣬һ°ã²»²¶»ñ£©
Å׳öÒì³£Å׳öµãÓÐtry{}¿é¡¢, try{}¿éij¸öÉî²ãǶÌ×µÄ×÷ÓÃÓò¡¢try{}¿éij¸öÉî²ãǶÌ׵ķ½·¨ÖУ¬throwsÖ¸¶¨Òì³££¬throwÅ׳öµÄÒì³£
try{}²»°üÀ¨´íÎó¼ì²âÓï¾äÓëthrow×Ӿ䣬µ«ËüµÄ³ÌÐò¿éÖÐËùÒýÓõĶÔÏ󽫻áÖ´Ðй¹Ô캯ÊýÖеĴíÎó¼ì²â´úÂ룬²¢Å׳öÒì³£
ÎÒÃÇÖ»ÒªÇóÒì³£ÖÕÖ¹²úÉúÒì³£µÄ³ÌÐò¿éÖ´ÐУ¬¶ø²»Í£Ö¹Õû¸ö³ÌÐò
Òì³£ÐÅÏ¢´«µÝͨ¹ý¶ÔÏóÒýÓòúÉú£¬È»ºóÈÃcatch¿éÖеIJÎÊýÃû£¨¶ÔÏóÃû£©ÒýÓÃ
16.8 ²¶»ñÒì³££º

Òì³£´¦Àí³ÌÐò°üº¬ÔÚcatch³ÌÐò¿éÖÐ
Óï·¨£º
catch (classNmae---Ö¸¶¨ÒªÅ׳öµÄÒì³£µÄÀàÐÍ£¬²ÎÊýÃû-----ÓÃÀ´ÒýÓô¦Àí³ÌÐò²¶»ñµÄ¶ÔÏó){javaCode -----´¦ÀíÒì³£¿ÉÖ´ÐдúÂë}

catchʹÓÃ×¢ÒâÊÂÏ
1¡¢ Èô¼ÙÉèÒì³£´¦ÀíÖ®ºó£¬³ÌÐò¿ØÖƽ«·µ»ØthrowºóµÄµÚÒ»¸öÓï¾ä£¬ÄÇô½«µ¼ÖÂÂß¼­´íÎó
2¡¢ ½«catch³ÌÐò¿éµÄ²ÎÊý²»ÄÜÉèÖóɶà¸ö£¬Ò»¸öcatchÖ»ÓÐÒ»¸ö²ÎÊý
3¡¢ ÈôÁ½¸öcatch³ÌÐò¿é£¨¾ùºÍij¸ötry³ÌÐò¿éÓйأ©¶¼ÓÃÓÚ²¶»ñͬһÀàÐÍÒì³££¬ÄÇô½«²úÉúÓï·¨´íÎó
4¡¢ ²¶»ñÌØÊâÒì³£¿ÉÄÜÕÒ²»µ½£¬ÐèÒªÔÚÏÂÒ»²ãtryÖÐÕÒ£¬ÈôÕÒ²»µ½£¬ÄÇôÃüÁîÐÐAPP/¿ØÖÆ̨APP£¨²»»ùÓÚGUI£©½«Í˳ö³ÌÐò£¬Applet»ò»ùÓÚGUIµÄAPP½«¼ÌÐøÖ´Ðд¦ÓÚÒ»¸ö²»Îȶ¨µÄ״̬µÄAPP
5¡¢ ÈôijһÀàÐÍÒì³££¬¿ÉÄÜÓм¸¸öÒì³£´¦Àí³ÌÐòÓëËûÏàÆ¥Å䣬ÄÇôִÐÐfirstÏàÆ¥ÅäµÄÒì³£´¦Àí³ÌÐò
6¡¢Ò»¸ö³ÌÐò¿ÉÒÔͬʱ´¦ÀíÐí¶à¹ØϵÃÜÇеÄÒì³££¬ÎÒÃÇ¿Éν´ËExceptionGroupÌṩ1¸öÒì³£ÀàÓëcatch´¦Àí³ÌÐò£¬µ±Ä³¸öÒì³£·¢Éúʱ£¬¿É¸ù¾Ý²»Í¬µÄʵÀýÊý¾Ý´´½¨Òì³£¶ÔÏó£¬Í¬Ê±catch¼ì²é¸ÃÊý¾Ý£¬ÒÔÅжÏÒì³£µÄÀàÐÍ£»ÎÒÃÇÒ»°ã²»Ìᳫ´ËÖÖ±à³Ì·ç¸ñ£¬×îºÃÓü̳еķ½·¨½â¾ö
7¡¢ ÔÚÒì³£´¦Àí³ÌÐòÖУ¬²»ÄÜ·ÃÎÊtry¿éÖж¨ÒåµÄ¶ÔÏó£¬Òì³£´¦Àí¿ªÊ¼£¬try¿ì½áÊø
8¡¢ ÈôÖ´ÐÐij¸öÒì³£´¦Àí³ÌÐòʱÓÖÅ׳öÒ»¸öÒì³££¬Ô­try¿éÒѾ­ÖÕÖ¹£¬ÄÇô¾ÍÈÃÔ­tryÍâ²ãtry´¦Àí³ÌÐò½øÐд¦Àí£¬Í¬Ê±Íâ²ãtry³ÌÐò¼àÊÓ²¢´¦ÀíÔ­try¿éµÄcatch´¦Àí³ÌÐò²úÉúµÄ´íÎó
9¡¢Òì³£´¦Àí³ÌÐòµÄÐÎʽ£ºA¡¢ÖØÅ׳öÒì³££»B¡¢Í¨¹ýÅ׳öÁíÒ»ÖÖ²»Í¬ÀàÐ͵ÄÒì³£À´×ª»»Òì³£ÀàÐÍ£»C¡¢Í¨¹ýÖ´ÐÐÍê×îºóÒ»¸öÒì³£´¦Àí³ÌÐòÖ®ºó£¬Íê³ÉÈκαØÒªµÄ»Ö¸´¹¤×÷²¢Ê¹³ÌÐò¼ÌÐøÖ´ÐУ»D¡¢ÅжϲúÉú´íÎóµÄÔ­Òò£¬È»ºó´¦Àí£¬²¢ÖØе÷ÓÃÔ­À´Ôø²úÉú¸ÃÒì³£µÄ·½·¨ E¡¢¼òµ¥ÏòRuntime·µ»ØÒ»¸ö״ֵ̬ ¡­¡­¡­¡­¡­µÈµÈ
10¡¢ ´«Í³µÄ¿ØÖÆÁ÷²»Ê¹ÓÃÒì³££¬Òò¡°¶îÍâµÄ¡±Òì³£»á¡°Ñڸǡ±ÄÇЩÕæÕýµÄ´íÎóÀàÐ͵ÄÒì³££¬³ÌÐòÔ±ºÜÄѸú×ÙÄÇЩ´óÁ¿µÄÒì³££¬¶øÇÒÕâÀïµÄÒì³£²»ÊǾ­³£¼ûµ½µÄ
11¡¢ catch´¦Àí³ÌÐòÅ׳öÒ»¸öÒì³££¬½«ÓÉcatch´¦Àí»òÓëͬ1¸ötry¿éÏà¹ØµÄÆäËû´¦Àí³ÌÐòÀ´´¦Àí£¬¾Í»á²úÉúÂß¼­´íÎó

16.9 ÖØÅ׳öÒì³££º
catchÒì³£´¦Àí³ÌÐòÖгöÏÖÒì³££¬ÐèÒªÆäËûcatch´¦Àí³ÌÐò´¦Àí¸ÃÒì³£
¿ÉÒÔÓÃthrowÖØÅ׳öÒì³£

16.10 throws ×Ӿ䣺

ÓÃ;£ºÔÚÒ»¸ömethodÖУ¬ÀûÓÃÆäÁгö¸Ã·½·¨ËùÄÜÅ׳öµÄÒì³£
int g (float h) throws a,b,c
{
//method body
}
Å׳öµÄ¶ÔÏóΪ£ºÖ¸¶¨Àà¶ÔÏó»òÕß×ÓÀà¶ÔÏó

1¡¢ÔËÐÐʱÒì³££º·¢ÉúÒì³£ÊÇijЩ¿É±ÜÃâµÄÊÂÇé³öÏÖ´íÎó
´ËÒì³£ÊÇRuntimeExceptionÀàÅÉÉú³öÀ´µÄ
°üÀ¨£ºArrayIndexOutOfBoundsException(·ÃÎÊÒ»¸öÔ½½çÊý×éϱê)£¬NullPointerException(NullÒýÓòÙ×÷Å׳ö---ÉùÃ÷¶øûÓд´½¨¶ÔÏó)£»
ClassCastException (ÎÞЧµÄÀàÐÍת»»Òý·¢)
IOException £¬InterruptedException

Throws²»±ØÒªÏÔʽָ³öRuntimeExceptionÓëError£¬¶øÒªÖ¸³ömethod»ò¸ÃmethodËùµ÷ÓõÄmethodÏÔʽÅ׳ö·ÇRuntimeExceptionÒì³£
3¡¢ javaÒì³£Çø·Ö£º¾­¼ì²éµÄException(·ÇRuntimeException)£»Î´¾­¼ì²éµÄException(RuntimeException)£»Error

×¢ÒâÊÂÏ
1¡¢ methodÅ׳öÒ»¸ö¾­¼ì²éµÄException£¬Èô¸ÃExceptionδÁÐÔÚthrows×Ó¾äÖУ¬»á²úÉúÓï·¨´íÎó
2¡¢ ÊÔͼÔÚÒ»¸öûÓÐthrows×Ó¾äÖÐmethodÅ׳öÒì³££¬»á²úÉúÓï·¨´íÎó
3¡¢ Èômethod1µ÷ÓÃmethod2£¨ÏÔʾÅ׳ö¾­¼ì²éµÄException£©£¬±ØÐëÔÚmethod1µÄ×Ó¾äÁгö´ËÒì³££¬³ý·Çmethod2ÒѾ­²¶»ñ´ËÒì³£
4¡¢ ×ÓÀàmethodµÄthrowsÇåµ¥ÊǸ¸ÀàmethodµÄthrowsÇåµ¥µÄ×Ó¼¯
5¡¢ ²¶»ñÒì³£±ØÐë´¦Àí£¬²ÅÄÜÂú×ã¡°java²¶»ñ»òÉùÃ÷¡±¡£
6¡¢ java±àÒëÆ÷Ç¿ÖƳÌÐòÔ±´¦ÀíÒì³££¬¾ø¶Ô²»ÄܺöÂÔÒì³£´¦Àí
7¡¢ javaÁгöµÄError¼ûj2SDK 1.42 Documention µÄjava.lang package errors (AWTError)
8¡¢ javaÁгöµÄException¼ûj2SDK 1.42 Documention µÄjava.lang package Exception ¡¢ java.util package Exception ¡¢java.io package Exception¡¢java.awt package Exception¡¢java.net package Exception

16.11¹¹Ô캯Êý¡¢ÖÕÖ¹º¯ÊýºÍÒì³£´¦Àí

µ±¹¹Ô캯Êý¼ì²â´íÎ󣨲»ÄÜ·µ»ØÖµ£©½â¾ö·½°¸£¨ÈóÌÐòÖªµÀÎÞ·¨ÕýÈ·¹¹Ôì¸Ã¶ÔÏ󣩣º
1¡¢Ö±½Ó·µ»Ø¸Ã´íÎó¶ÔÏ󣬵±Ê¹ÓøöÔÏó½øÐÐÅжϣ¬ÒÔÈ·¶¨´Ë¶ÔÏóÊÇ·ñ´íÎó
2¡¢Ôڸù¹Ô캯ÊýÍâÉ趨һ¸öÈ«¾Ö±äÁ¿£¬¶¼²»ÊǺ÷½·¨3¡¢Å׳öÒì³££¬°Ñ´Îº¯Êý´íÎóÐÅÏ¢´«µÝµ½Íⲿ£¬²¢´¦Àí¸Ã´íÎó
4¡¢ µ±¸Ãº¯ÊýÅ׳öException £¬ÄÇô¸Ãº¯Êý½¨Á¢µÄ¶ÔÏ󽫱»ÉèÖñê¼Ç£¬ÓÃÓë×îÖÕµÄÎÞÓõ¥Ôª»ØÊÕ´¦Àí£¬¹ÊÐèÒªµ÷ÓÃÖÕÖ¹º¯Êý¡£

16.12Òì³£Óë¼Ì³Ð£º

ÒòΪ¼Ì³Ð¹Øϵ£¬¸÷ÖÖ´íÎó¿ÉÒÔ¶à̬´¦Àí
Ò»°ã×îºÃ²¶»ñ²¢´¦Àí¸¸ÀàÒì³££¬£¨½öµ±ËùÓÐ×ÓÀà¶ÔÏóµÄ´¦Àí·½·¨¶¼Ò»Ö²ÅÓÐÒâÒ壩£¬·ñÔò£¬²¶»ñ×ÓÀàÒì³£

16.13 finally³ÌÐò¿é

Èô³ÌÐòÏÔʾʹÓÃijЩ×ÊÔ´£¬ÄÇô±ØÐëÔÚ×îºóÍê³É¶Ô×ÊÔ´µÄÊͷż´ÎÞÓ¹µ¥Ôª»ØÊÕ£¬ÔÚCÓëC++ÖУ¬³£¼ûÊÇÖ¸Õë²»ÄÜ»ØÊÕ£¬º¯Êý²»ÄÜÖÕÖ¹£¬³öÏÖ¡°ÄÚ´æй¶¡±
javaʵÏÖ×Ô¶¯µÄÎÞÓ¹µÄµ¥Ôª»ØÊÕ¹¦ÄÜ£¬¿É±ÜÃâ¡°ÄÚ´æй¶¡±£¬µ«javaͬÑù´æÔÚ±ðµÄ¡°×ÊԴй¶¡±
Ò»°ãÔÚfinally³ÌÐò¿éÖÐʹÓÃһЩ×ÊÔ´ÊͷŵĴúÂë
1¡¢ finally³ÌÐò¿é½«try³ÌÐò¿éÖÐËùÓдò¿ªÎļþ¹Ø±Õ
2¡¢ java²¢Ã»Óг¹µ×Ïû³ý×ÊԴй¶¡¢µ±Ä³¸ö¶ÔÏó²»´æÔÚÊÇ£¬java²Å¶Ô¸Ã¶ÔÏó½øÐÐÎÞÓ¹µ¥Ôª»ØÊÕ´¦Àí£¬µ±³ÌÐòÔ±´íÎóµÄ¶Ôij¸ö¶ÔÏó±£³ÖÒýÓÃʱ£¬¾Í»á³öÏÖÄÚ´æй¶
3¡¢ exception ( String informationString):ÆäÖÐinformationStringÊǶԸÃÀàÒì³£ÃèÊöÐÅÏ¢£¬¶ø»ñµÃÐÅϢʹÓÃgetMessage(ÓÃÓÚ·µ»Ø±£´æÔÚij¸öÒì³£ÖеÄÃèÊö×Ö·û´®)¡£PrintStackTrace(ÓÃÓÚ°Ñ·½·¨µ÷ÓöÑÕ»µÄÄÚÈÝ´òÓ¡³öÀ´£¬¶Ô²âÊÔ³ÌÐòÌرðÓÐÓÃ)¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ