try catch的使用throws的使用


unchecked exception和checked exception的區別

所有異常類型都是 Throwable 類的子類,它包含Exception類和Error類,Exception又包括checked exception和unchecked exception。

unchecked exception:Java編譯器不要求對未檢查異常一定捕獲或拋出,可以不做處理。此類異常通常是在邏輯上有錯誤,可以通過修改代碼避免。在eclipse中(保存即編譯)編譯后此類異常發生處會報錯。

checked exception:Java編譯器要求對檢查異常必須捕獲或拋出,代碼邏輯沒有錯誤,但程序運行時會因為IO等錯誤導致異常,你在編寫程序階段是預料不到的。如果不處理這些異常,程序將來肯定會出錯。所以編譯器會提示你要去捕獲並處理這種可能發生的異常,不處理就不能通過編譯

 

try  catch

在ideal中快捷鍵 ctrl + alt + T

 

catch(Exception e){
e.printStackTrace() ;
}
當try語句中出現異常是時,會執行catch中的語句,java運行時系統會自動將catch括號中的Exception e 初始化,也就是實例化Exception類型的對象。e是此對象引用名稱。然后e(引用)會自動調用Exception類中指定的方法,也就出現了e.printStackTrace() ;。
printStackTrace()方法的意思是:在命令行打印異常信息在程序中出錯的位置及原因。(這是白話解釋,比較容易理解)

捕獲到異常后,如果輸出錯誤信息對應的分別是如圖

 

 

try catch finally

try中報錯,就會執行catch里面的,catch里面可以捕獲報錯的信息等;一定會執行finally里的;

 

這個鏈接說的東西有點意思:https://blog.csdn.net/mxd446814583/article/details/80355572;(這個例子中的第一個例子有點奇怪,為什么catch中return了。最后就不用return了,在我理解來看final應該也要return才行額,經過我的分析因為 finally一定會執行,try  finally 和 catch  finally 是2個情況,只有其中一種有返回就行了(就像if else一樣,一種情況下必須要有返回值),當然fianlly中有需要的話,有返回值也是可以的),補充:只有靜態(static)的方法才可以直接被調用;

 

 

try catch 和throws 的區別對比

https://blog.csdn.net/dongapple/article/details/80351969

throws  exception的意思就是把異常拋給調用它的地方,編譯都不通過的

throws 一直拋到拋到頂級的話,就交給jvm處理了。顯然這是不好的,一般用try catch 捕捉 調用帶有throws exception的方法

關鍵字 xxx() throws Excepton{},表示此處不處理異常,交由方法調用處處理,就是向上拋出異常
如果將 public void main(String [] args ) throws Exception 主方法將向上拋出異常,給jvm去處理了,此時主方法內的異常 就不需要處理

異常如果一直被throws拋出的話就會被jvm異常處理器處理了,這時jvm會跳出正常運行狀態。

所以呢,有異常必須最終在某個地方catch住,以便不讓他被jvm異常處理器處理

////throws的作用///////////////////////////////////
聲明方法可能回避的異常

有異常被拋出了,就要做處理,所以java中有try-catch
可是有時候一個方法中產生了異常,但是不知道該怎么處理它,那么就放着不管,當有異常拋出時會中斷該方法,而異常被拋到這個方法的調用者那里。這個有點像下屬處理不了的問題就交到上司手里一樣,這種情況稱為回避異常
但是這使得調用這個方法就有了危險,因為誰也不知道這個方法什么時候會丟一個什么樣的異常給調用者,所以在定義方法時,就需要在方法頭部分使用throws來聲明這個方法可能回避的異常
void fun()throws IOException,SQLException
{
...
}
這表示 fun方法可能會丟兩個異常出來,那么在調用fun的時候就會做好准備,比如可以這樣
try
{
fun();
}catch(IOException e)
{
}catch(SQLException e)
{
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM