1. 程式人生 > >Java異常:Throwable

Java異常:Throwable

4、throws 丟擲(在方法的定義上) 1)格式: throws 異常類名,可以一次丟擲多個 
  • 這個格式必須跟在方法的括號後面。 
  • public void test7() throws ArithmeticException {}
2)注意:
  • 呼叫該方法的方法,需要處理該異常,如不處理,繼續丟擲。
3)小結:
  • 編譯期異常丟擲,將來呼叫者必須處理。 
  • 執行期異常丟擲,將來呼叫可以不用處理。 
5、throw(在方法體內) 1)格式:throw 異常物件
  • 如果出現了異常情況,我們可以把該異常丟擲,這個時候的丟擲的應該是異常的物件。
  • throw new ArithmeticException();
  • 一般用於自定義的異常使用
2)面試題:throw和throws是的區別
  • throw:
    • 在方法體中,後面跟的是異常物件名,並且只能是一個。
    • 丟擲的是一個異常物件,說明這裡肯定有一個異常產生了。
  • throws:
    • 在方法宣告上,後面跟的是異常的類名,可以是多個。
    • 是宣告方法有異常,是一種可能性,這個異常並不一定會產生。
(三)finally關鍵字及其面試題 1、finally用於釋放資源,它的程式碼永遠會執行。特殊情況:在執行到finally之前jvm退出了 2、面試題
  • final,finally,finalize的區別?
    • final:最終的意思,可以修飾類,成員變數,成員方法
      • 修飾類,類不能被繼承 
      • 修飾變數,變數是常量
      • 修飾方法,方法不能被重寫
    • finally:是異常處理的一部分,用於釋放資源。
      • 一般來說,程式碼肯定會執行,特殊情況:在執行到finally之前jvm退出了
    • finalize:是Object類的一個方法,用於垃圾回收。
  • 如果在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>