Java異常:Throwable
阿新 • • 發佈:2019-02-20
4、throws 丟擲(在方法的定義上)
1)格式: throws 異常類名,可以一次丟擲多個
- 這個格式必須跟在方法的括號後面。
- public void test7() throws ArithmeticException {}
- 呼叫該方法的方法,需要處理該異常,如不處理,繼續丟擲。
- 編譯期異常丟擲,將來呼叫者必須處理。
- 執行期異常丟擲,將來呼叫可以不用處理。
- 如果出現了異常情況,我們可以把該異常丟擲,這個時候的丟擲的應該是異常的物件。
- throw new ArithmeticException();
- 一般用於自定義的異常使用
- throw:
- 在方法體中,後面跟的是異常物件名,並且只能是一個。
- 丟擲的是一個異常物件,說明這裡肯定有一個異常產生了。
- throws:
- 在方法宣告上,後面跟的是異常的類名,可以是多個。
- 是宣告方法有異常,是一種可能性,這個異常並不一定會產生。
- final,finally,finalize的區別?
- final:最終的意思,可以修飾類,成員變數,成員方法
- 修飾類,類不能被繼承
- 修飾變數,變數是常量
- 修飾方法,方法不能被重寫
- 修飾類,類不能被繼承
- finally:是異常處理的一部分,用於釋放資源。
- 一般來說,程式碼肯定會執行,特殊情況:在執行到finally之前jvm退出了
- finalize:是Object類的一個方法,用於垃圾回收。
- final:最終的意思,可以修飾類,成員變數,成員方法
- 如果在catch裡面有return,請問finally還執行嗎?如果執行,在return前還是後
- 會執行,在 return 前面執行。
- 注意:返回路徑就形成問題。*
<span style="font-size:18px;"><span style="font-family:Arial;"> /* * 面試題: * 1:final,finally和finalize的區別 * final:最終的意思,可以修飾類,成員變數,成員方法 * 修飾類,類不能被繼承 * 修飾變數,變數是常量 * 修飾方法,方法不能被重寫 * finally:是異常處理的一部分,用於釋放資源。 * 一般來說,程式碼肯定會執行,特殊情況:在執行到finally之前jvm退出了 * finalize:是Object類的一個方法,用於垃圾回收 * * 2:如果catch裡面有return語句,請問finally裡面的程式碼還會執行嗎? * 如果會,請問是在return前,還是return後。 * 會。前。 * * 準確的說,應該是在中間。 * * 3:try...catch...finally的格式變形 * A:try...catch...finally * B:try...catch * C:try...catch...catch... * D:try...catch...catch...finally * E:try...finally * 這種做法的目前是為了釋放資源。 */ public int test10(){ int a = 10; try { System.out.println(a / 0); a = 20; } catch (ArithmeticException e) { a = 30; return a; /* * return a在程式執行到這一步的時候,這裡不是return a而是return 30;這個返回路徑就形成了。 * 但是呢,它發現後面還有finally,所以繼續執行finally的內容,a=40 * 再次回到以前的返回路徑,繼續走return 30; */ } finally { a = 40; return a;//如果這樣結果就是40了。 } // return a; } </span></span>