°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
ʵ¡£Èô½«×Ô¼ºµÄtry¡¡¿éÖÃÈëÒ»¸öÑ»·ÄÚ£¬¾Í¿É½¨Á¢Ò»¸öÌõ¼þ£¬Ëü±ØÐëÔÚ¼ÌÐø³ÌÐò֮ǰÂú×ã¡£Òà¿ÉÌí¼ÓÒ»¸ö¡¡
static¼ÆÊýÆ÷»òÕßÁíһЩÉ豸£¬ÔÊÐíÑ»·ÔÚ·ÅÆúÒÔÇ°³¢ÊÔÊýÖÖ²»Í¬µÄ·½·¨¡£ÕâÑùÒ»À´£¬ÎÒÃǵijÌÐò¿ÉÒÔ±äµÃ¡¡
¸ü¼Ó¡°½¡×³¡±¡£¡¡¡¡
Êä³öÈçÏ£º¡¡¡¡
¡¡¡¡
Exception¡¡thrown¡¡¡¡
in¡¡finally¡¡clause¡¡¡¡
No¡¡exception¡¡¡¡
in¡¡finally¡¡clause¡¡¡¡
¡¡¡¡
ÎÞÂÛÊÇ·ñ¡°ÖÀ¡±³öÒ»¸öÎ¥Àý£¬finally¡¡´Ó¾ä¶¼»áÖ´ÐС£¡¡¡¡
9¡£6¡£1¡¡¡¡Óá¡finally¡¡×öʲô¡¡¡¡
ÔÚûÓС°À¬»øÊÕ¼¯¡±ÒÔ¼°¡°×Ô¶¯µ÷ÓÃÆÆ»µÆ÷¡±»úÖƵÄÒ»ÖÖÓïÑÔÖУ¨×¢Ê͢ݣ©£¬finally¡¡ÏÔµÃÌرðÖØÒª£¬ÒòΪ¡¡
³ÌÐòÔ±¿ÉÓÃËüµ£±£ÄÚ´æµÄÕýÈ·ÊÍ·Å¡ª¡ªÎÞÂÛÔÚ¡¡try¡¡¿éÄÚ²¿·¢ÉúÁËʲô״¿ö¡£µ«Java¡¡ÌṩÁËÀ¬»øÊÕ¼¯»úÖÆ£¬Ëù¡¡
ÒÔÄÚ´æµÄÊͷż¸ºõ¾ø¶Ô²»»á³ÉΪÎÊÌâ¡£ÁíÍ⣬ËüҲûÓй¹½¨Æ÷¿É¹©µ÷Ó᣼ÈÈ»Èç´Ë£¬Java¡¡ÀïºÎʱ²Å»áÓõ½¡¡
finally¡¡ÄØ£¿¡¡¡¡
¡¡¡¡
¢Ý£º¡°ÆÆ»µÆ÷¡±£¨Destructor£©ÊÇ¡°¹¹½¨Æ÷¡±£¨Constructor£©µÄ·´Òå´Ê¡£Ëü´ú±íÒ»¸öÌØÊâµÄº¯Êý£¬Ò»µ©Ä³¸ö¡¡
¶ÔÏóʧȥÓô¦£¬Í¨³£¾Í»áµ÷ÓÃËü¡£ÎÒÃǿ϶¨ÖªµÀÔÚÄÄÀïÒÔ¼°ºÎʱµ÷ÓÃÆÆ»µÆ÷¡£C£«£«ÌṩÁË×Ô¶¯µÄÆÆ»µÆ÷µ÷Óûú¡¡
ÖÆ£¬µ«Delphi¡¡µÄObject¡¡Pascal¡¡°æ±¾¡¡1¼°¡¡2¡¡È´²»¾ß±¸ÕâÒ»ÄÜÁ¦£¨ÔÚÕâÖÖÓïÑÔÖУ¬ÆÆ»µÆ÷µÄº¬ÒåÓëÓ÷¨¶¼·¢Éú¡¡
Á˱仯£©¡£¡¡¡¡
¡¡¡¡
³ý½«ÄÚ´æÉè»ØÔʼ״̬ÒÔÍ⣬ÈôÒªÉèÖÃÁíһЩ¶«Î÷£¬finally¡¡¾ÍÊDZØÐèµÄ¡£ÀýÈ磬ÎÒÃÇÓÐʱÐèÒª´ò¿ªÒ»¸öÎÄ¡¡
¼þ»òÕß½¨Á¢Ò»¸öÍøÂçÁ¬½Ó£¬»òÕßÔÚÆÁÄ»ÉϻһЩ¶«Î÷£¬ÉõÖÁÉèÖÃÍⲿÊÀ½çµÄÒ»¸ö¿ª¹Ø£¬µÈµÈ¡£ÈçÏÂÀýËùʾ£º¡¡¡¡
¡¡¡¡
//£º¡¡OnOffSwitch¡£java¡¡¡¡
//¡¡Why¡¡use¡¡finally£¿¡¡¡¡
¡¡¡¡
class¡¡Switch¡¡£û¡¡¡¡
¡¡¡¡boolean¡¡state¡¡=¡¡false£»¡¡¡¡
¡¡¡¡boolean¡¡read£¨£©¡¡£û¡¡return¡¡state£»¡¡£ý¡¡¡¡
¡¡¡¡void¡¡on£¨£©¡¡£û¡¡state¡¡=¡¡true£»¡¡£ý¡¡¡¡
¡¡¡¡void¡¡off£¨£©¡¡£û¡¡state¡¡=¡¡false£»¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡277¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡279¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡
public¡¡class¡¡OnOffSwitch¡¡£û¡¡¡¡
¡¡¡¡static¡¡Switch¡¡sw¡¡=¡¡new¡¡Switch£¨£©£»¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡sw¡£on£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡//¡¡Code¡¡that¡¡can¡¡throw¡¡exceptions¡£¡£¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡sw¡£off£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡catch£¨NullPointerException¡¡e£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨NullPointerException¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡sw¡£off£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡catch£¨IllegalArgumentException¡¡e£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨IOException¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡sw¡£off£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
ÕâÀïµÄÄ¿±êÊDZ£Ö¤main£¨£©Íê³Éʱ¿ª¹Ø´¦ÓڹرÕ״̬£¬ËùÒÔ½«¡¡sw¡£off£¨£©ÖÃÓÚ¡¡try¡¡¿éÒÔ¼°Ã¿¸öÎ¥Àý¿ØÖÆÆ÷µÄÄ©¡¡
β¡£µ«²úÉúµÄÒ»¸öÎ¥ÀýÓпÉÄܲ»ÊÇÔÚÕâÀﲶ»ñµÄ£¬Õâ±ã»á´í¹ý¡¡sw¡£off£¨£©¡£È»¶ø£¬ÀûÓÃfinally£¬ÎÒÃÇ¿ÉÒÔ½«¡¡
À´×Ô¡¡try¡¡¿éµÄ¹Ø±Õ´úÂëÖ»ÖÃÓÚÒ»¸öµØ·½£º¡¡¡¡
¡¡¡¡
//£º¡¡WithFinally¡£java¡¡¡¡
//¡¡Finally¡¡Guarantees¡¡cleanup¡¡¡¡
¡¡¡¡
class¡¡Switch2¡¡£û¡¡¡¡
¡¡¡¡boolean¡¡state¡¡=¡¡false£»¡¡¡¡
¡¡¡¡boolean¡¡read£¨£©¡¡£û¡¡return¡¡state£»¡¡£ý¡¡¡¡
¡¡¡¡void¡¡on£¨£©¡¡£û¡¡state¡¡=¡¡true£»¡¡£ý¡¡¡¡
¡¡¡¡void¡¡off£¨£©¡¡£û¡¡state¡¡=¡¡false£»¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
public¡¡class¡¡WithFinally¡¡£û¡¡¡¡
¡¡¡¡static¡¡Switch2¡¡sw¡¡=¡¡new¡¡Switch2£¨£©£»¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡sw¡£on£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡//¡¡Code¡¡that¡¡can¡¡throw¡¡exceptions¡£¡£¡£¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡catch£¨NullPointerException¡¡e£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨NullPointerException¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡catch£¨IllegalArgumentException¡¡e£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨IOException¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡finally¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡sw¡£off£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
ÔÚÕâ¶ù£¬sw¡£off£¨£©ÒÑÒÆÖÁÒ»¸öµØ·½¡£ÎÞÂÛ·¢ÉúʲôÊÂÇ飬¶¼¿Ï¶¨»áÔËÐÐËü¡£¡¡¡¡
¼´Ê¹Î¥Àý²»ÔÚµ±Ç°µÄcatch¡¡´Ó¾ä¼¯Àﲶ»ñ£¬finally¡¡¶¼»áÔÚÎ¥Àý¿ØÖÆ»úÖÆתµ½¸ü¸ß¼¶±ðËÑË÷Ò»¸ö¿ØÖÆÆ÷֮ǰ¡¡
µÃÒÔÖ´ÐС£ÈçÏÂËùʾ£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡278¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡280¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡
//£º¡¡AlwaysFinally¡£java¡¡¡¡
//¡¡Finally¡¡is¡¡always¡¡executed¡¡¡¡
¡¡¡¡
class¡¡Ex¡¡extends¡¡Exception¡¡£û£ý¡¡¡¡
¡¡¡¡
public¡¡class¡¡AlwaysFinally¡¡£û¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¨Entering¡¡first¡¡try¡¡block¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨Entering¡¡second¡¡try¡¡block¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡throw¡¡new¡¡Ex£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡£ý¡¡finally¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨finally¡¡in¡¡2nd¡¡try¡¡block¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡catch£¨Ex¡¡e£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨Caught¡¡Ex¡¡in¡¡first¡¡try¡¡block¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡finally¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨finally¡¡in¡¡1st¡¡try¡¡block¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
¸Ã³ÌÐòµÄÊä³öչʾÁ˾ßÌå·¢ÉúµÄÊÂÇ飺¡¡¡¡
¡¡¡¡
Entering¡¡first¡¡try¡¡block¡¡¡¡
Entering¡¡second¡¡try¡¡block¡¡¡¡
finally¡¡in¡¡2nd¡¡try¡¡block¡¡¡¡
Caught¡¡Ex¡¡in¡¡first¡¡try¡¡block¡¡¡¡
finally¡¡in¡¡1st¡¡try¡¡block¡¡¡¡
¡¡¡¡
Èôµ÷ÓÃÁËbreak¡¡ºÍ¡¡continue¡¡Óï¾ä£¬finally¡¡Óï¾äÒ²»áµÃÒÔÖ´ÐС£Çë×¢Ò⣬Óë×÷ÉϱêÇ©µÄbreak¡¡ºÍ¡¡continue¡¡
Ò»µÀ£¬finallyÅųýÁË¡¡Java¡¡¶Ô¡¡goto¡¡ÌøתÓï¾äµÄÐèÇ󡣡¡¡¡
9¡£6¡£2¡¡¡¡È±µã£º¶ªÊ§µÄÎ¥Àý¡¡¡¡
Ò»°ãÇé¿öÏ£¬Java¡¡µÄÎ¥Àýʵʩ·½°¸¶¼ÏÔµÃÊ®·Ö³öÉ«¡£²»ÐÒµÄÊÇ£¬ËüÒÀÈ»´æÔÚÒ»¸öȱµã¡£¾¡¹ÜÎ¥ÀýÖ¸³ö³ÌÐòÀï¡¡
´æÔÚÒ»¸öΣ»ú£¬¶øÇÒ¾ø²»Ó¦ºöÂÔ£¬µ«Ò»¸öÎ¥ÀýÈÔÓпÉÄܼòµ¥µØ¡°¶ªÊ§¡±¡£ÔÚ²ÉÓá¡finally¡¡´Ó¾äµÄÒ»ÖÖÌØÊâÅä¡¡
ÖÃÏ£¬±ãÓпÉÄÜ·¢ÉúÕâÖÖÇé¿ö£º¡¡¡¡
¡¡¡¡
//£º¡¡LostMessage¡£java¡¡¡¡
//¡¡How¡¡an¡¡exception¡¡can¡¡be¡¡lost¡¡¡¡
¡¡¡¡
class¡¡VeryImportantException¡¡extends¡¡Exception¡¡£û¡¡¡¡
¡¡¡¡public¡¡String¡¡toString£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡return¡¡¡¨A¡¡very¡¡important¡¡exception£¡¡¨£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡279¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡281¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
class¡¡HoHumException¡¡extends¡¡Exception¡¡£û¡¡¡¡
¡¡¡¡public¡¡String¡¡toString£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡return¡¡¡¨A¡¡trivial¡¡exception¡¨£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
public¡¡class¡¡LostMessage¡¡£û¡¡¡¡
¡¡¡¡void¡¡f£¨£©¡¡throws¡¡VeryImportantException¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡throw¡¡new¡¡VeryImportantException£¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡void¡¡dispose£¨£©¡¡throws¡¡HoHumException¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡throw¡¡new¡¡HoHumException£¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡throws¡¡Exception¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡LostMessage¡¡lm¡¡=¡¡new¡¡LostMessage£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡lm¡£f£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡finally¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡lm¡£dispose£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
Êä³öÈçÏ£º¡¡¡¡
¡¡¡¡
A¡¡trivial¡¡exception¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡at¡¡LostMessage¡£dispose£¨LostMessage¡£java£º21£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡at¡¡LostMessage¡£main£¨LostMessage¡£java£º29£©¡¡¡¡
¡¡¡¡
¿ÉÒÔ¿´µ½£¬ÕâÀï²»´æÔÚ¡¡VeryImportantException¡¡£¨·Ç³£ÖØÒªµÄÎ¥Àý£©µÄ¼£Ïó£¬ËüÖ»ÊǼòµ¥µØ±»finally´Ó¾ä¡¡
ÖеÄHoHumException¡¡´úÌæÁË¡£¡¡¡¡
ÕâÊÇÒ»ÏîÏ൱ÑÏÖصÄȱÏÝ£¬ÒòΪËüÒâζ×ÅÒ»¸öÎ¥Àý¿ÉÄÜÍêÈ«¶ªÊ§¡£¶øÇÒ¾ÍÏóÇ°ÀýÑ