throw和throws的區別
拋出異常有三種形式,一是throw,一個throws,還有一種系統自動拋異常。下面它們之間的異同
一、系統自動拋異常
當程序語句出現一些邏輯錯誤、主義錯誤或類型轉換錯誤時,系統會自動拋出異常
二、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拋異常聲明,然后交給調用它的上層函數進行處理。