throws 和
throw 有什麼差別?
1、位置不同:throws用在函數上,後面跟的是異常類,可以跟很多個。
throw用在函數内,後面跟的是異常對象。
2、功能不同:throws用來聲明異常,讓調用者知道功能有可能出現問題,并由調用者可以給出預先的處理方式。
throw抛出具體問題對象。執行到throw功能已經結束了,跳轉到調用者(誰調用跳哪去),并将具體的問題對象抛給了調用者。
異常體系最大的特點就是體系中的類以及類産生的對象,都具備可抛性。可抛性的意思就是可以被throws和throw所操作的。
異常的原則:
1、功能内部有異常抛出,功能上一定要throws聲明。
内部抛什麼異常類型,功能上就聲明什麼。聲明的目的就是為了讓調用者處理(抛或者try
catch),如果調用者不處理,編譯失敗。
2、特殊情況:
當函數内通過throw抛出RuntimeException及其子類異常對象時,函數可以不用throws聲明,。不聲明的目的就是不讓調用者處理,讓調用者程式停止,要對代碼進行修改。
Exception分為兩種:
1、編譯時會被檢測的異常。
2、運作時異常(編譯時不檢測)。
自定義異常:在自定義的程式中,如果有了問題,也可以像java中的異常一樣,對問題進行描述。
舉例:定義一個功能可以實作除法運算,但是除數不可以為負數。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZwpmL3kTMwADM4UTNzATM3ADMxgTMwIzLcZDM0EDMy8CXvZmbp9CXt92YuUGZvNWatFWbuU2Zh1Wavw1LcpDc0RHaiojIsJye.jpg)