±¾ÎÄ×ÅÖØ½éÉÜÁË
Java Ò쳣ѡÔñºÍʹÓÃÖеÄһЩÎóÇø£¬Ï£Íû¸÷λ¶ÁÕßÄܹ»ÊìÁ·ÕÆÎÕÒì³£´¦ÀíµÄһЩעÒâµãºÍÔÔò£¬×¢Òâ×ܽáºÍ¹éÄÉ¡£Ö»Óд¦ÀíºÃÁËÒì³££¬²ÅÄÜÌáÉý¿ª·¢ÈËÔ±µÄ»ù±¾ËØÑø£¬Ìá¸ßϵͳµÄ½¡×³ÐÔ£¬ÌáÉýÓû§ÌåÑ飬Ìá¸ß²úÆ·µÄ¼ÛÖµ¡£
ÎóÇøÒ»¡¢Òì³£µÄÑ¡Ôñ
ͼ 1. Òì³£·ÖÀà

ͼ 1 ÃèÊöÁËÒì³£µÄ½á¹¹£¬ÆäʵÎÒÃǶ¼ÖªµÀÒì³£·Ö¼ì²âÒì³£ºÍ·Ç¼ì²âÒì³££¬µ«ÊÇÔÚʵ¼ÊÖÐÓÖ»ìÏýÁËÕâÁ½ÖÖÒì³£µÄÓ¦Óá£ÓÉÓڷǼì²âÒ쳣ʹÓ÷½±ã£¬ºÜ¶à¿ª·¢ÈËÔ±¾ÍÈÏΪ¼ì²âÒ쳣ûʲôÓô¦¡£ÆäʵÒì³£µÄÓ¦ÓÃÇé¾°¿ÉÒÔ¸ÅÀ¨ÎªÒÔÏ£º
Ò»¡¢µ÷ÓôúÂë²»ÄܼÌÐøÖ´ÐУ¬ÐèÒªÁ¢¼´ÖÕÖ¹¡£³öÏÖÕâÖÖÇé¿öµÄ¿ÉÄÜÐÔÌ«¶àÌ«¶à£¬ÀýÈç·þÎñÆ÷Á¬½Ó²»ÉÏ¡¢²ÎÊý²»ÕýÈ·µÈ¡£ÕâЩʱºò¶¼ÊÊÓ÷Ǽì²âÒì³££¬²»ÐèÒªµ÷ÓôúÂëµÄÏÔʽ²¶×½ºÍ´¦Àí£¬¶øÇÒ´úÂë¼ò½àÃ÷ÁË¡£
¶þ¡¢µ÷ÓôúÂëÐèÒª½øÒ»²½´¦ÀíºÍ»Ö¸´¡£¼ÙÈ罫 SQLException ¶¨ÒåΪ·Ç¼ì²âÒì³££¬ÕâÑù²Ù×÷Êý¾Ýʱ¿ª·¢ÈËÔ±ÀíËùµ±È»µÄÈÏΪ
SQLException ²»ÐèÒªµ÷ÓôúÂëµÄÏÔʽ²¶×½ºÍ´¦Àí£¬½ø¶ø»áµ¼ÖÂÑÏÖØµÄ Connection ²»¹Ø±Õ¡¢Transaction
²»»Ø¹ö¡¢DB ÖгöÏÖÔàÊý¾ÝµÈÇé¿ö£¬ÕýÒòΪ SQLException ¶¨ÒåΪ¼ì²âÒì³££¬²Å»áÇýʹ¿ª·¢ÈËԱȥÏÔʽ²¶×½£¬²¢ÇÒÔÚ´úÂë²úÉúÒì³£ºóÇåÀí×ÊÔ´¡£µ±È»ÇåÀí×ÊÔ´ºó£¬¿ÉÒÔ¼ÌÐøÅ׳ö·Ç¼ì²âÒì³££¬×èÖ¹³ÌÐòµÄÖ´ÐС£¸ù¾Ý¹Û²ìºÍÀí½â£¬¼ì²âÒì³£´ó¶à¿ÉÒÔÓ¦ÓÃÓÚ¹¤¾ßÀàÖС£
ÎóÇø¶þ¡¢½«Òì³£Ö±½ÓÏÔʾÔÚÒ³Ãæ»ò¿Í»§¶Ë¡£
½«Òì³£Ö±½Ó´òÓ¡ÔÚ¿Í»§¶ËµÄÀý×ÓÂżû²»ÏÊ£¬ÒÔ JSP ΪÀý£¬Ò»µ©´úÂëÔËÐгöÏÖÒì³££¬Ä¬ÈÏÇé¿öÏÂÈÝÆ÷½«Òì³£¶ÑÕ»ÐÅÏ¢Ö±½Ó´òÓ¡ÔÚÒ³ÃæÉÏ¡£Æäʵ´Ó¿Í»§½Ç¶ÈÀ´Ëµ£¬ÈκÎÒì³£¶¼Ã»ÓÐʵ¼ÊÒâÒ壬¾ø´ó¶àÊýµÄ¿Í»§Ò²¸ù±¾¿´²»¶®Òì³£ÐÅÏ¢£¬Èí¼þ¿ª·¢Ò²Òª¾¡Á¿±ÜÃ⽫Òì³£Ö±½Ó³ÊÏÖ¸øÓû§¡£
Çåµ¥ 1
package com.ibm.dw.sample.exception; /** * ×Ô¶¨Òå RuntimeException * Ìí¼Ó´íÎó´úÂëÊôÐÔ */ public class RuntimeException extends java.lang.RuntimeException { //ĬÈÏ´íÎó´úÂë public static final Integer GENERIC = 1000000; //´íÎó´úÂë private Integer errorCode; public RuntimeException(Integer errorCode, Throwable cause) { this(errorCode, null, cause); } public RuntimeException(String message, Throwable cause) { //ÀûÓÃͨÓôíÎó´úÂë this(GENERIC, message, cause); } public RuntimeException(Integer errorCode, String message, Throwable cause) { super(message, cause); this.errorCode = errorCode; } public Integer getErrorCode() { return errorCode; } } |
ÕýÈçʾÀý´úÂëËùʾ£¬ÔÚÒì³£ÖÐÒýÈë´íÎó´úÂ룬һµ©³öÏÖÒì³££¬ÎÒÃÇÖ»Òª½«Òì³£µÄ´íÎó´úÂë³ÊÏÖ¸øÓû§£¬»òÕß½«´íÎó´úÂëת»»³É¸üͨË×Ò×¶®µÄÌáʾ¡£ÆäʵÕâÀïµÄ´íÎó´úÂ뻹°üº¬ÁíÍâÒ»¸ö¹¦ÄÜ£¬¿ª·¢ÈËÔ±Òà¿ÉÒÔ¸ù¾Ý´íÎó´úÂë׼ȷµÄÖªµÀÁË·¢ÉúÁËʲôÀàÐÍÒì³£¡£
ÎóÇøÈý¡¢¶Ô´úÂë²ã´Î½á¹¹µÄÎÛȾ
ÎÒÃǾ³£½«´úÂë·Ö Service¡¢Business Logic¡¢DAO µÈ²»Í¬µÄ²ã´Î½á¹¹£¬DAO ²ãÖлá°üº¬Å׳öÒì³£µÄ·½·¨£¬ÈçÇåµ¥
2 Ëùʾ£º
Çåµ¥ 2
public Customer retrieveCustomerById(Long id) throw SQLException { //¸ù¾Ý ID ²éѯÊý¾Ý¿â } |
ÉÏÃæÕâ¶Î´úÂëÕ¦Ò»¿´Ã»Ê²Ã´ÎÊÌ⣬µ«ÊÇ´ÓÉè¼ÆñîºÏ½Ç¶È×Ðϸ¿¼ÂÇһϣ¬ÕâÀïµÄ SQLException ÎÛȾµ½ÁËÉϲãµ÷ÓôúÂ룬µ÷ÓòãÐèÒªÏÔʽµÄÀûÓÃ
try-catch ²¶×½£¬»òÕßÏò¸üÉϲã´Î½øÒ»²½Å׳ö¡£¸ù¾ÝÉè¼Æ¸ôÀëÔÔò£¬ÎÒÃÇ¿ÉÒÔÊʵ±Ð޸ijɣº
Çåµ¥ 3
public Customer retrieveCustomerById(Long id) { try{ //¸ù¾Ý ID ²éѯÊý¾Ý¿â }catch(SQLException e){ //ÀûÓ÷Ǽì²âÒì³£·â×°¼ì²âÒì³££¬½µµÍ²ã´ÎñîºÏ throw new RuntimeException(SQLErrorCode, e); }finally{ //¹Ø±ÕÁ¬½Ó£¬ÇåÀí×ÊÔ´ } } |
ÎóÇøËÄ¡¢ºöÂÔÒì³£
ÈçÏÂÒì³£´¦ÀíÖ»Êǽ«Òì³£Êä³öµ½¿ØÖÆÌ¨£¬Ã»ÓÐÈκÎÒâÒå¡£¶øÇÒÕâÀï³öÏÖÁËÒì³£²¢Ã»ÓÐÖжϳÌÐò£¬½ø¶øµ÷ÓôúÂë¼ÌÐøÖ´ÐУ¬µ¼Ö¸ü¶àµÄÒì³£¡£
Çåµ¥ 4
public void retrieveObjectById(Long id){ try{ //..some code that throws SQLException }catch(SQLException ex){ /** *Á˽âµÄÈ˶¼ÖªµÀ£¬ÕâÀïµÄÒì³£´òÓ¡ºÁÎÞÒâÒ壬 ½ö½öÊǽ«´íÎó¶ÑÕ»Êä³öµ½¿ØÖÆÌ¨¡£ * ¶øÔÚ Production »·¾³ÖУ¬ÐèÒª½«´íÎó¶ÑÕ»Êä³öµ½ÈÕÖ¾¡£ * ¶øÇÒÕâÀï catch ´¦ÀíÖ®ºó³ÌÐò¼ÌÐøÖ´ÐУ¬»áµ¼Ö½øÒ»²½µÄÎÊÌâ*/
ex.printStacktrace();
}
} |
¿ÉÒÔÖØ¹¹³É£º
Çåµ¥ 5
public void retrieveObjectById(Long id){ try{ //..some code that throws SQLException } catch(SQLException ex){ throw new RuntimeException(¡°Exception in retieveObjectById¡±, ex); } finally{ //clean up resultset, statement, connection etc } } |
Õâ¸öÎóÇø±È½Ï»ù±¾£¬Ò»°ãÇé¿ö϶¼²»»á·¸´ËµÍ¼¶´íÎó?¡£
ÎóÇøÎå¡¢½«Òì³£°üº¬ÔÚÑ»·Óï¾ä¿éÖÐ
ÈçÏ´úÂëËùʾ£¬Òì³£°üº¬ÔÚ for Ñ»·Óï¾ä¿éÖС£
Çåµ¥ 6
for(int i=0; i<100; i++){ try{ }catch(XXXException e){ //¡. } } |
ÎÒÃǶ¼ÖªµÀÒì³£´¦ÀíÕ¼ÓÃϵͳ×ÊÔ´¡£Ò»¿´£¬´ó¼Ò¶¼ÈÏΪ²»»á·¸ÕâÑùµÄ´íÎó¡£»»¸ö½Ç¶È£¬Àà A ÖÐÖ´ÐÐÁËÒ»¶ÎÑ»·£¬Ñ»·Öе÷ÓÃÁË
B ÀàµÄ·½·¨£¬B ÀàÖб»µ÷Óõķ½·¨È´ÓÖ°üº¬ try-catch ÕâÑùµÄÓï¾ä¿é¡£ÍÊÈ¥ÀàµÄ²ã´Î½á¹¹£¬´úÂëºÍÉÏÃæÈç³öÒ»ÕÞ¡£
ÎóÇøÁù¡¢ÀûÓà Exception ²¶×½ËùÓÐDZÔÚµÄÒì³£
Ò»¶Î·½·¨Ö´Ðйý³ÌÖÐÅ׳öÁ˼¸¸ö²»Í¬ÀàÐ͵ÄÒì³££¬ÎªÁË´úÂë¼ò½à£¬ÀûÓûùÀà Exception ²¶×½ËùÓÐDZÔÚµÄÒì³££¬ÈçÏÂÀýËùʾ£º
Çåµ¥ 7
public void retrieveObjectById(Long id){ try{ //¡Å׳ö IOException µÄ´úÂëµ÷Óà //¡Å׳ö SQLException µÄ´úÂëµ÷Óà }catch(Exception e){ //ÕâÀïÀûÓûùÀà Exception ²¶×½µÄËùÓÐDZÔÚµÄÒì³£ £¬Èç¹û¶à¸ö²ã´ÎÕâÑù²¶×½£¬»á¶ªÊ§ÔʼÒì³£µÄÓÐЧÐÅÏ¢ throw new RuntimeException(¡°Exception in retieveObjectById¡±, e); } } |
¿ÉÒÔÖØ¹¹³É
Çåµ¥ 8
public void retrieveObjectById(Long id){ try{ //..some code that throws RuntimeException, IOException, SQLException }catch(IOException e){ //½ö½ö²¶×½ IOException throw new RuntimeException (/*Ö¸¶¨ÕâÀï IOException ¶ÔÓ¦µÄ´íÎó´úÂë*/code, ¡°Exception in retieveObjectById¡±, e); }catch(SQLException e){ //½ö½ö²¶×½ SQLException throw new RuntimeException (/*Ö¸¶¨ÕâÀï SQLException ¶ÔÓ¦µÄ´íÎó´úÂë*/code,¡°Exception in retieveObjectById¡±, e); } } |
ÎóÇøÆß¡¢¶à²ã´Î·â×°Å׳ö·Ç¼ì²âÒì³£
Èç¹ûÎÒÃÇÒ»Ö±¼á³Ö²»Í¬ÀàÐ͵ÄÒì³£Ò»¶¨Óò»Í¬µÄ²¶×½Óï¾ä£¬ÄǴ󲿷ÖÀý×Ó¿ÉÒÔÈÆ¹ýÕâÒ»½ÚÁË¡£µ«ÊÇÈç¹û½ö½öÒ»¶Î´úÂëµ÷ÓûáÅ׳öÒ»ÖÖÒÔÉϵÄÒ쳣ʱ£¬ºÜ¶àʱºòûÓбØÒªÃ¿¸ö²»Í¬ÀàÐ͵Ä
Exception дһ¶Î catch Óï¾ä£¬¶ÔÓÚ¿ª·¢À´Ëµ£¬ÈκÎÒ»ÖÖÒì³£¶¼×㹻˵Ã÷Á˳ÌÐòµÄ¾ßÌåÎÊÌâ¡£
Çåµ¥ 9
try{ //¿ÉÄÜÅ׳ö RuntimeException¡¢IOExeption »òÕ߯äËü£» //×¢ÒâÕâÀïºÍÎóÇøÁùµÄÇø±ð£¬ ÕâÀïÊÇÒ»¶Î´úÂëÅ׳ö¶àÖÖÒì³£¡£ ÒÔÉÏÊǶà¶Î´úÂ룬¸÷×ÔÅ׳ö²»Í¬µÄÒì³£ }catch(Exception e){ //Ò»Èç¼ÈÍùµÄ½« Exception ת»»³É RuntimeException£¬ µ«ÊÇÕâÀïµÄ e ÆäʵÊÇ RuntimeException µÄʵÀý£¬ ÒѾÔÚǰ¶Î´úÂëÖзâ×°¹ý throw new RuntimeException(/**/code, /**/, e); } |
Èç¹ûÎÒÃÇÈçÉÏÀýËùʾ£¬½«ËùÓÐµÄ Exception ÔÙת»»³É RuntimeException£¬ÄÇôµ± Exception
µÄÀàÐÍÒѾÊÇ RuntimeException ʱ£¬ÎÒÃÇÓÖ×öÁËÒ»´Î·â×°¡£½« RuntimeException
ÓÖÖØÐ·â×°ÁËÒ»´Î£¬½ø¶ø¶ªÊ§ÁËÔÓÐµÄ RuntimeException Я´øµÄÓÐЧÐÅÏ¢¡£
½â¾ö°ì·¨ÊÇÎÒÃÇ¿ÉÒÔÔÚ RuntimeException ÀàÖÐÌí¼ÓÏà¹ØµÄ¼ì²é£¬È·ÈϲÎÊý Throwable
²»ÊÇ RuntimeException µÄʵÀý¡£Èç¹ûÊÇ£¬½«¿½±´ÏàÓ¦µÄÊôÐÔµ½Ð½¨µÄʵÀýÉÏ¡£»òÕßÓò»Í¬µÄ catch
Óï¾ä¿é²¶×½ RuntimeException ºÍÆäËüµÄ Exception¡£¸öÈËÆ«ºÃ·½Ê½Ò»£¬ºÃ´¦²»ÑÔ¶øÓ÷¡£
ÎóÇø°Ë¡¢¶à²ã´Î´òÓ¡Òì³£
ÎÒÃÇÏÈ¿´Ò»ÏÂÏÂÃæµÄÀý×Ó£¬¶¨ÒåÁË 2 ¸öÀà A ºÍ B¡£ÆäÖÐ A ÀàÖе÷ÓÃÁË B ÀàµÄ´úÂ룬²¢ÇÒ A ÀàºÍ
B ÀàÖж¼²¶×½´òÓ¡ÁËÒì³£¡£
Çåµ¥ 10
public class A { private static Logger logger = LoggerFactory.getLogger(A.class); public void process(){ try{ //ʵÀý»¯ B À࣬¿ÉÒÔ»»³ÉÆäËü×¢ÈëµÈ·½Ê½ B b = new B(); b.process(); //other code might cause exception } catch(XXXException e){ //Èç¹û B Àà process ·½·¨Å׳öÒì³££¬ Òì³£»áÔÚ B ÀàÖб»´òÓ¡£¬ÔÚÕâÀïÒ²»á±»´òÓ¡£¬´Ó¶ø»á´òÓ¡ 2 ´Î logger.error(e); throw new RuntimeException (/* ´íÎó´úÂë */ errorCode, /*Òì³£ÐÅÏ¢*/msg, e); } } } public class B{ private static Logger logger = LoggerFactory.getLogger(B.class); public void process(){ try{ //¿ÉÄÜÅ׳öÒì³£µÄ´úÂë } catch(XXXException e){ logger.error(e); throw new RuntimeException (/* ´íÎó´úÂë */ errorCode, /*Òì³£ÐÅÏ¢*/msg, e); } } } |
ͬһ¶ÎÒì³£»á±»´òÓ¡ 2 ´Î¡£Èç¹û²ã´ÎÔÙ¸´ÔÓÒ»µã£¬²»È¥¿¼ÂÇ´òÓ¡ÈÕÖ¾ÏûºÄµÄϵͳÐÔÄÜ£¬½ö½öÔÚÒì³£ÈÕÖ¾ÖÐÈ¥¶¨Î»Òì³£¾ßÌåµÄÎÊÌâÒѾ¹»Í·ÌÛµÄÁË¡£
Æäʵ´òÓ¡ÈÕÖ¾Ö»ÐèÒªÔÚ´úÂëµÄ×îÍâ²ã²¶×½´òÓ¡¾Í¿ÉÒÔÁË£¬Òì³£´òÓ¡Ò²¿ÉÒÔд³É AOP£¬Ö¯Èëµ½¿ò¼ÜµÄ×îÍâ²ã¡£
ÎóÇø¾Å¡¢Òì³£°üº¬µÄÐÅÏ¢²»Äܳä·Ö¶¨Î»ÎÊÌâ
Òì³£²»½öÒªÄܹ»Èÿª·¢ÈËÔ±ÖªµÀÄÄÀï³öÁËÎÊÌ⣬¸ü¶àʱºò¿ª·¢ÈËÔ±»¹ÐèÒªÖªµÀÊÇʲôÔÒòµ¼ÖµÄÎÊÌ⣬ÎÒÃÇÖªµÀ java
.lang.Exception ÓÐ×Ö·û´®ÀàÐͲÎÊýµÄ¹¹Ôì·½·¨£¬Õâ¸ö×Ö·û´®¿ÉÒÔ×Ô¶¨Òå³ÉͨË×Ò×¶®µÄÌáʾÐÅÏ¢¡£
¼òµ¥µÄ×Ô¶¨ÒåÐÅÏ¢¿ª·¢ÈËÔ±Ö»ÄÜÖªµÀÄÄÀï³öÏÖÁËÒì³££¬µ«ÊǺܶàµÄÇé¿öÏ£¬¿ª·¢ÈËÔ±¸üÐèÒªÖªµÀÊÇʲô²ÎÊýµ¼ÖÂÁËÕâÑùµÄÒì³£¡£Õâ¸öʱºòÎÒÃǾÍÐèÒª½«·½·¨µ÷ÓõIJÎÊýÐÅÏ¢×·¼Óµ½×Ô¶¨ÒåÐÅÏ¢ÖС£ÏÂÀýÖ»ÁоÙÁËÒ»¸ö²ÎÊýµÄÇé¿ö£¬¶à¸ö²ÎÊýµÄÇé¿öÏ£¬¿ÉÒÔµ¥¶Àдһ¸ö¹¤¾ßÀà×éÖ¯ÕâÑùµÄ×Ö·û´®¡£
Çåµ¥ 11
public void retieveObjectById(Long id){ try{ //..some code that throws SQLException }catch(SQLException ex){ //½«²ÎÊýÐÅÏ¢Ìí¼Óµ½Òì³£ÐÅÏ¢ÖÐ throw new RuntimeException (¡°Exception in retieveObjectById with Object Id :¡±+ id, ex); } } |
ÎóÇøÊ®¡¢²»ÄÜԤ֪DZÔÚµÄÒì³£
ÔÚд´úÂëµÄ¹ý³ÌÖУ¬ÓÉÓÚ¶Ôµ÷ÓôúÂëȱ·¦Éî²ã´ÎµÄÁ˽⣬²»ÄÜ׼ȷÅжÏÊÇ·ñµ÷ÓõĴúÂë»á²úÉúÒì³££¬Òò¶øºöÂÔ´¦Àí¡£ÔÚ²úÉúÁË
Production Bug Ö®ºó²ÅÏëÆðÀ´Ó¦¸ÃÔÚij¶Î´úÂë´¦Ìí¼ÓÒì³£²¹×½£¬ÉõÖÁ²»ÄÜ׼ȷָ³ö³öÏÖÒì³£µÄÔÒò¡£Õâ¾ÍÐèÒª¿ª·¢ÈËÔ±²»½öÖªµÀ×Ô¼ºÔÚ×öʲô£¬¶øÇÒҪȥ¾¡¿ÉÄܵÄÖªµÀ±ðÈË×öÁËʲô£¬¿ÉÄܻᵼÖÂʲô½á¹û£¬´ÓÈ«¾ÖÈ¥¿¼ÂÇÕû¸öÓ¦ÓóÌÐòµÄ´¦Àí¹ý³Ì¡£ÕâЩ˼Ïë»áÓ°ÏìÎÒÃǶԴúÂëµÄ±àдºÍ´¦Àí¡£
ÎóÇøÊ®Ò»¡¢»ìÓöàÖÖµÚÈý·½ÈÕÖ¾¿â
ÏÖÈç½ñ Java µÚÈý·½ÈÕÖ¾¿âµÄÖÖÀàÔ½À´Ô½¶à£¬Ò»¸ö´óÏîÄ¿ÖлáÒýÈë¸÷ÖÖ¸÷ÑùµÄ¿ò¼Ü£¬¶øÕâЩ¿ò¼ÜÓÖ»áÒÀÀµ²»Í¬µÄÈÕÖ¾¿âµÄʵÏÖ¡£×îÂé·³µÄÎÊÌâµ¹²»ÊÇÒýÈëËùÓÐÐèÒªµÄÕâЩÈÕÖ¾¿â£¬ÎÊÌâÔÚÓÚÒýÈëµÄÕâЩÈÕÖ¾¿âÖ®¼ä±¾Éí²»¼æÈÝ¡£Èç¹ûÔÚÏîÄ¿³õÆÚ¿ÉÄÜ»¹ºÃ½â¾ö£¬¿ÉÒÔ°ÑËùÓдúÂëÖеÄÈÕÖ¾¿â¸ù¾ÝÐèÒªÖØÐÂÒýÈëÒ»±é£¬»òÕß»»Ò»Ì׿ò¼Ü¡£µ«ÕâÑùµÄ³É±¾²»ÊÇÿ¸öÏîÄ¿¶¼³ÐÊܵįðµÄ£¬¶øÇÒÔ½ÊÇËæ×ÅÏîÄ¿µÄ½øÐУ¬ÕâÖÖ·çÏÕ¾ÍÔ½´ó¡£
ÔõôÑù²ÅÄÜÓÐЧµÄ±ÜÃâÀàËÆµÄÎÊÌâ·¢ÉúÄØ£¬ÏÖÔڵĴó¶àÊý¿ò¼ÜÒѾ¿¼Âǵ½ÁËÀàËÆµÄÎÊÌ⣬¿ÉÒÔͨ¹ýÅäÖà Properties
»ò xml Îļþ¡¢²ÎÊý»òÕßÔËÐÐʱɨÃè Lib ¿âÖеÄÈÕ־ʵÏÖÀà£¬ÕæÕýÔÚÓ¦ÓóÌÐòÔËÐÐʱ²ÅÈ·¶¨¾ßÌåÓ¦ÓÃÄĸöÌØ¶¨µÄÈÕÖ¾¿â¡£
Æäʵ¸ù¾Ý²»ÐèÒª¶à²ã´Î´òÓ¡ÈÕÖ¾ÄÇÌõÔÔò£¬ÎÒÃǾͿÉÒÔ¼ò»¯ºÜ¶àÔ±¾µ÷ÓÃÈÕÖ¾´òÓ¡´úÂëµÄÀà¡£ºÜ¶àÇé¿öÏ£¬ÎÒÃÇ¿ÉÒÔÀûÓÃÀ¹½ØÆ÷»òÕß¹ýÂËÆ÷ʵÏÖÈÕÖ¾µÄ´òÓ¡£¬½µµÍ´úÂëά»¤¡¢Ç¨ÒƵijɱ¾¡£
½áÊøÓï
ÒÔÉÏ´¿Êô¸öÈ˵ľÑéºÍ×ܽᣬÊÂÎï¶¼ÊDZçÖ¤µÄ£¬Ã»Óоø¶ÔµÄÔÔò£¬ÊʺÏ×Ô¼ºµÄ²ÅÊÇ×îÓÐЧµÄÔÔò¡£Ï£ÍûÒÔÉϵĽ²½âºÍ·ÖÎö¿ÉÒÔ¶ÔÄúÓÐËù°ïÖú¡£ |