###Javaå¼å¸¸å¤çæºå¶ ####1. å¼å tryâ¦catchâ¦finallyæææ¯å¤§å®¶åçæä¸è¿çè¯å¥äºï¼è䏿è§ç¨èµ·æ¥ä¹æ¯å¾ç®åï¼é»è¾ä¸ä¼¼ä¹ä¹æ¯å¾å®¹æçè§£ãä¸è¿ï¼æäº²èªä½éªçâæè®âåè¯æï¼è¿ä¸ªä¸è¥¿å¯ä¸æ¯æ³è±¡ä¸çé£ä¹ç®åãå¬è¯ãä¸ä¿¡ï¼é£ä½ ççä¸é¢ç代ç ï¼âççâ宿§è¡åçç»æä¼æ¯ä»ä¹ï¼ä¸è¦å¾åççæ¡ãä¹ä¸è®¸æ§è¡ä»£ç ççæ£çæ¡å¦ãå¦æä½ ççæ¡æ¯æ£ç¡®ï¼é£ä¹è¿ç¯æç« ä½ å°±ä¸ç¨æµªè´¹æ¶é´çå¦ã package Test; public class TestException { public TestException() { } boolean testEx() throws Exception { boolean ret = true; try { ret = testEx1(); } catch (Exception e) { System.out.println("testEx, catch exception"); ret = false; throw e; } finally { System.out.println("testEx, finally; return value=" + ret); return ret; } } boolean testEx1() throws Exception { boolean ret = true; try { ret = testEx2(); if (!ret) { return false; } System.out.println("testEx1, at the end of try"); return ret; } catch (Exception e) { System.out.println("testEx1, catch exception"); ret = false; throw e; } finally { System.out.println("testEx1, finally; return value=" + ret); return ret; } } boolean testEx2() throws Exception { boolean ret = true; try { int b = 12; int c; for (int i = 2; i >= -2; i--) { c = b / i; System.out.println("i=" + i); } return true; } catch (Exception e) { System.out.println("testEx2, catch exception"); ret = false; throw e; } finally { System.out.println("testEx2, finally; return value=" + ret); return ret; } } public static void main(String[] args) { TestException testException1 = new TestException(); try { testException1.testEx(); } catch (Exception e) { e.printStackTrace(); } } } ä½ ççæ¡æ¯ä»ä¹ï¼æ¯ä¸é¢ççæ¡åï¼ i=2 i=1 testEx2, catch exception testEx2, finally; return value=false testEx1, catch exception testEx1, finally; return value=false testEx, catch exception testEx, finally; return value=false å¦æä½ ççæ¡ççå¦ä¸é¢æè¯´ï¼é£ä¹ä½ éå¦ã^_^ï¼é£å°±å»ºè®®ä½ ä»ç»çä¸çè¿ç¯æç« æè æ¿ä¸é¢çä»£ç æåç§ä¸åçæ åµä¿®æ¹ãæ§è¡ãæµè¯ï¼ä½ ä¼åç°æå¾å¤äºæ 䏿¯åæ¥æ³è±¡ä¸çé£ä¹ç®åçãç°å¨å ¬å¸æ£ç¡®çæ¡ï¼ i=2 i=1 testEx2, catch exception testEx2, finally; return value=false testEx1, finally; return value=false testEx, finally; return value=false 注æè¯´æï¼ finallyè¯å¥åä¸åºè¯¥åºç° åºè¯¥åºç°returnãä¸é¢çreturn retæå¥½æ¯å ¶ä»è¯å¥æ¥å¤çç¸å ³é»è¾ã ####2.JAVAå¼å¸¸ å¼å¸¸æä¸æèè³çåç§ç¶åµï¼å¦ï¼æä»¶æ¾ä¸å°ãç½ç»è¿æ¥å¤±è´¥ã鿳忰çãå¼å¸¸æ¯ä¸ä¸ªäºä»¶ï¼å®åçå¨ç¨åºè¿è¡æé´ï¼å¹²æ°äºæ£å¸¸çæä»¤æµç¨ãJavaé è¿APIä¸Throwableç±»çä¼å¤åç±»æè¿°åç§ä¸åçå¼å¸¸ãå èï¼Javaå¼å¸¸é½æ¯å¯¹è±¡ï¼æ¯Throwableåç±»çå®ä¾ï¼æè¿°äºåºç°å¨ä¸æ®µç¼ç ä¸ç é误æ¡ä»¶ã彿¡ä»¶çææ¶ï¼é误å°å¼åå¼å¸¸ã Javaå¼å¸¸ç±»å±æ¬¡ç»æå¾ï¼  å¨ Java ä¸ï¼ææçå¼å¸¸é½æä¸ä¸ªå ±åçç¥å Throwableï¼å¯æåºï¼ãThrowable æå®ä»£ç ä¸å¯ç¨å¼å¸¸ä¼ ææºå¶éè¿ Java åºç¨ç¨åºä¼ è¾çä»»ä½é®é¢çå ±æ§ã **Throwable**ï¼ æä¸¤ä¸ªéè¦çåç±»ï¼Exceptionï¼å¼å¸¸ï¼å Errorï¼é误ï¼ï¼äºè 齿¯ Java å¼å¸¸å¤ççéè¦åç±»ï¼åèªé½å å«å¤§éåç±»ã **Errorï¼é误ï¼**:æ¯ç¨åºæ æ³å¤ççé误ï¼è¡¨ç¤ºè¿è¡åºç¨ç¨åºä¸è¾ä¸¥éé®é¢ã大夿°é误ä¸ä»£ç ç¼åè æ§è¡çæä½æ å ³ï¼è表示代ç è¿è¡æ¶ JVMï¼Java èææºï¼åºç°çé®é¢ãä¾å¦ï¼Javaèææºè¿è¡é误ï¼Virtual MachineErrorï¼ï¼å½ JVM ä¸åæç»§ç»æ§è¡æä½æéçå åèµæºæ¶ï¼å°åºç° OutOfMemoryErrorãè¿äºå¼å¸¸åçæ¶ï¼Javaèææºï¼JVMï¼ä¸è¬ä¼éæ©çº¿ç¨ç»æ¢ã è¿äºé误表示æ éåçäºèææºèªèº«ãæè åçå¨èææºè¯å¾æ§è¡åºç¨æ¶ï¼å¦Javaèææºè¿è¡é误ï¼Virtual MachineErrorï¼ãç±»å®ä¹é误ï¼NoClassDefFoundErrorï¼çãè¿äºé误æ¯ä¸å¯æ¥çï¼å 为å®ä»¬å¨åºç¨ç¨åºçæ§å¶åå¤çè½åä¹ å¤ï¼èä¸ç»å¤§å¤æ°æ¯ç¨åºè¿è¡æ¶ä¸å 许åºç°çç¶åµã对äºè®¾è®¡åççåºç¨ç¨åºæ¥è¯´ï¼å³ä½¿ç¡®å®åçäºéè¯¯ï¼æ¬è´¨ä¸ä¹ä¸åºè¯¥è¯å¾å»å¤ç宿å¼èµ·çå¼å¸¸ç¶åµãå¨ Javaä¸ï¼é误éè¿Errorçåç±»æè¿°ã **Exceptionï¼å¼å¸¸ï¼**:æ¯ç¨åºæ¬èº«å¯ä»¥å¤ççå¼å¸¸ã Exception ç±»æä¸ä¸ªéè¦çåç±» RuntimeExceptionãRuntimeException ç±»åå ¶å类表示âJVM å¸¸ç¨æä½âå¼åçé误ãä¾å¦ï¼è¥è¯å¾ä½¿ç¨ç©ºå¼å¯¹è±¡å¼ç¨ã餿°ä¸ºé¶ææ°ç»è¶çï¼ååå«å¼åè¿è¡æ¶å¼å¸¸ï¼NullPointerExceptionãArithmeticExceptionï¼å ArrayIndexOutOfBoundExceptionã >注æï¼å¼å¸¸åé误çåºå«ï¼å¼å¸¸è½è¢«ç¨åºæ¬èº«å¯ä»¥å¤çï¼éè¯¯æ¯æ æ³å¤çã é常ï¼Javaçå¼å¸¸(å æ¬ExceptionåError)åä¸ºå¯æ¥çå¼å¸¸ï¼checked exceptionsï¼åä¸å¯æ¥çå¼å¸¸ï¼unchecked exceptionsï¼ã **坿¥å¼å¸¸ï¼ç¼è¯å¨è¦æ±å¿ é¡»å¤ç½®çå¼å¸¸ï¼**ï¼æ£ç¡®çç¨åºå¨è¿è¡ä¸ï¼å¾å®¹æåºç°çãæ çå¯å®¹çå¼å¸¸ç¶åµã坿¥å¼å¸¸è½ç¶æ¯å¼å¸¸ç¶åµï¼ä½å¨ä¸å®ç¨åº¦ä¸å®çåçæ¯å¯ä»¥é¢è®¡çï¼èä¸ä¸æ¦åçè¿ç§å¼å¸¸ç¶åµï¼å°±å¿ é¡»éåæç§æ¹å¼è¿è¡å¤çã é¤äºRuntimeExceptionåå ¶å类以å¤ï¼å ¶ä»çExceptionç±»åå ¶åç±»é½å±äºå¯æ¥å¼å¸¸ãè¿ç§å¼å¸¸çç¹ç¹æ¯Javaç¼è¯å¨ä¼æ£æ¥å®ï¼ä¹å°±æ¯è¯´ï¼å½ç¨åºä¸å¯è½åºç°è¿ç±»å¼å¸¸ï¼è¦ä¹ç¨try-catchè¯å¥æè·å®ï¼è¦ä¹ç¨throwsåå¥å£°ææåºå®ï¼å¦åç¼è¯ä¸ä¼éè¿ã **ä¸å¯æ¥å¼å¸¸(ç¼è¯å¨ä¸è¦æ±å¼ºå¶å¤ç½®çå¼å¸¸)**:å æ¬è¿è¡æ¶å¼å¸¸ï¼RuntimeExceptionä¸å ¶åç±»ï¼åé误ï¼Errorï¼ã Exception è¿ç§å¼å¸¸å两大类è¿è¡æ¶å¼å¸¸åéè¿è¡æ¶å¼å¸¸(ç¼è¯å¼å¸¸)ãç¨åºä¸åºå½å°½å¯è½å»å¤çè¿äºå¼å¸¸ã **è¿è¡æ¶å¼å¸¸**ï¼é½æ¯RuntimeExceptionç±»åå ¶åç±»å¼å¸¸ï¼å¦NullPointerException(空æéå¼å¸¸)ãIndexOutOfBoundsException(䏿 è¶çå¼å¸¸)çï¼è¿äºå¼å¸¸æ¯ä¸æ£æ¥å¼å¸¸ï¼ç¨åºä¸å¯ä»¥éæ©æè·å¤çï¼ä¹å¯ä»¥ä¸å¤çãè¿äºå¼å¸¸ä¸è¬æ¯ç±ç¨åºé»è¾é误å¼èµ·çï¼ç¨åºåºè¯¥ä»é»è¾è§åº¦å°½å¯è½é¿å è¿ç±»å¼å¸¸çåçã è¿è¡æ¶å¼å¸¸çç¹ç¹æ¯Javaç¼è¯å¨ä¸ä¼æ£æ¥å®ï¼ä¹å°±æ¯è¯´ï¼å½ç¨åºä¸å¯è½åºç°è¿ç±»å¼å¸¸ï¼å³ä½¿æ²¡æç¨try-catchè¯å¥æè·å®ï¼ä¹æ²¡æç¨throwsåå¥å£°ææåºå®ï¼ä¹ä¼ç¼è¯éè¿ã **éè¿è¡æ¶å¼å¸¸ ï¼ç¼è¯å¼å¸¸ï¼**ï¼æ¯RuntimeException以å¤çå¼å¸¸ï¼ç±»åä¸é½å±äºExceptionç±»åå ¶åç±»ãä»ç¨åºè¯æ³è§åº¦è®²æ¯å¿ é¡»è¿è¡å¤ççå¼å¸¸ï¼å¦æä¸å¤çï¼ç¨åºå°±ä¸è½ç¼è¯éè¿ãå¦IOExceptionãSQLExceptionç以åç¨æ·èªå®ä¹çExceptionå¼å¸¸ï¼ä¸è¬æ åµä¸ä¸èªå®ä¹æ£æ¥å¼å¸¸ã #### 4.å¤çå¼å¸¸æºå¶ å¨ Java åºç¨ç¨åºä¸ï¼å¼å¸¸å¤çæºå¶ä¸ºï¼æåºå¼å¸¸ï¼ææå¼å¸¸ã **æåºå¼å¸¸**ï¼å½ä¸ä¸ªæ¹æ³åºç°é误å¼åå¼å¸¸æ¶ï¼æ¹æ³å建å¼å¸¸å¯¹è±¡å¹¶äº¤ä»è¿è¡æ¶ç³»ç»ï¼å¼å¸¸å¯¹è±¡ä¸å å«äºå¼å¸¸ç±»ååå¼å¸¸åºç°æ¶çç¨åºç¶æçå¼å¸¸ä¿¡æ¯ãè¿è¡æ¶ç³»ç»è´è´£å¯»æ¾å¤ç½®å¼å¸¸ç代ç å¹¶æ§è¡ã