共同點:
兩者在拋出異常時,他們只管把異常拋出,並不處理異常,由調用者負責處理。
區別
(1)throw語句總是出現在方法體里面,用來拋出一個異常,表示在這個地方就有一個異常出現,程序會在throw后面立即終止,它后面的語句將執行不到。
而throws是出現在方法名的后面,用來把方法中出現的異常拋出去給調用者處理。
當方法中出現了異常自己不想處理,那么可以使用throws在方法名后面將異常拋出
去給調用者處理。
(2)throw只能拋出一個異常對象。
而throws可以在方法名后面一次性拋出多個異常,多個異常對象以逗號分隔。
(3)throw拋出異常時,調用它的方法時可以不聲明或不捕獲,雖編譯器不會報錯,但是從開發角度說還是要使用try-catch來處理這個異常。
而throws拋出異常時,調用它的方法時也要聲明拋出異常或者進行try-catch捕獲,否則編譯會報錯。
二、throw
1、throw是語句拋出一個異常,一般是在代碼塊的內部,當程序
現某種邏輯錯誤時由程序員主動拋出某種特定類型的異常
2、定義在方法體內
3、創建的是一個異常對象
4、確定了發生哪種異常才可以使用
三、throws
1、在方法參數列表后,throws后可以跟着多個異常名,表示拋出的異常用逗號隔開
2、表示向調用該類的位置拋出異常,不在該類解決
3、可能發生哪種異常
throws用在方法聲明后面,跟的是異常類名,throw用在方法體內,跟的是異常對象名。
throws可以跟多個異常類名,用逗號隔開,throw只能拋出一個異常對象名。
throws表示拋出異常,由該方法的調用者來處理,throw表示拋出異常,由方法體內的語句處理。
throws表示出現異常的一種可能性,並不一定會發生這些異常,throw則是拋出了異常,執行throw則一定拋出了某種異常。
四、異常
異常概述:
異常:異常是指在程序的運行過程中所發生的不正常的事件,它會中斷正在運行的程序。簡單來說就是程序出現了不正常的情況。異常本質就是Java當中對可能出現的問題進行描述的一種對象體現。
如果我們不做任何處理,異常將會交由虛擬機來處理
虛擬機的處理方式:
把異常的名稱,異常出現的位置,異常原因,等信息輸出打印在控制台,並同時將 程序停止執行。
在寫程序時,對可能會出現異常的部分通常要用try{...}catch{...}去捕捉它並對它進行處理;
用try{...}catch{...}捕捉了異常之后一定要對在catch{...}中對其進行處理,那怕是最簡單的一句輸出語句,或棧輸入e.printStackTrace();
如果是捕捉IO輸入輸出流中的異常,一定要在try{...}catch{...}后加finally{...}把輸入輸出流關閉;
如果在函數體內用throw拋出了某種異常,最好要在函數名中加throws拋異常聲明,然后交給調用它的上層函數進行處理。
參考:
https://baijiahao.baidu.com/s?id=1692578578844100859&wfr=spider&for=pc
https://www.cnblogs.com/zhangsonglin/p/10556402.html