Java中的throw和throws都是異常處理相關(guān)的關(guān)鍵字,但是它們的具體含義和使用方式卻有很大的差別。
throw關(guān)鍵字
throw new Exception("Something goes wrong");
throw關(guān)鍵字用于主動(dòng)拋出一個(gè)異常對象,一旦程序執(zhí)行到throw語句,控制權(quán)就會(huì)被傳遞給Java虛擬機(jī),以根據(jù)異常類型的不同執(zhí)行相應(yīng)的異常處理程序。在上面的代碼中,我們主動(dòng)拋出了一個(gè)Exception對象,并向控制臺(tái)輸出錯(cuò)誤信息"Something goes wrong"。
throws關(guān)鍵字
public void doSomething() throws IOException {...}
throws關(guān)鍵字通常用于方法簽名中,用于指定可能會(huì)被拋出的異常。當(dāng)方法運(yùn)行過程中出現(xiàn)了被throws聲明過的異常,該方法將把異常傳遞給它的調(diào)用者,由調(diào)用者來處理這個(gè)異常。在上面的代碼中,我們聲明了一個(gè)可能會(huì)拋出IOException異常的doSomething()方法。
需要注意的是,throws并不是強(qiáng)制要求方法一定要拋出異常,而只是用來指定該方法可能會(huì)拋出哪些異常。