這兩者雖然看起來只有一個s的區別,但是作用完全不一樣 /////java處理異常方式/////////////////////////////// 在java代碼中如果發生異常的話,jvm會拋出異常對象,導致程序代碼中斷,這個時候jvm在做的操作就是:創建異常對象,然後拋出,比如: int i= 1; int j = 0; int res = 0; res = i/j;//除0錯誤 System.out.println(res); 這5句代碼運行到第四句會中斷,因爲jvm拋出了異常 ////throw的作用///////////////////////////////////////// 手動拋出異常 但是有時候有些錯誤在jvm看來不是錯誤,比如說 int age = 0; age = -100; System.out.println(age); 很正常的整形變量賦值,但是在我們眼中看來就不正常,誰的年齡會是負的呢。 所以我們需要自己手動引發異常,這就是throw的作用 int age = 0; age = -100; if(age<0) { Exception e = new Exception();//創建異常對象 throw e;//拋出異常 } System.out.println(age); ////throws的作用/////////////////////////////////// 聲明方法可能迴避的異常 有異常被拋出了,就要做處理,所以java中有try-catch 可是有時候一個方法中產生了異常,但是不知道該怎麼處理它,那麼就放着不管,當有異常拋出時會中斷該方法,而異常被拋到這個方法的調用者那裏。這個有點像下屬處理不了的問題就交到上司手裏一樣,這種情況稱爲迴避異常 但是這使得調用這個方法就有了危險,因爲誰也不知道這個方法什麼時候會丟一個什麼樣的異常給調用者,所以在定義方法時,就需要在方法頭部分使用throws來聲明這個方法可能迴避的異常 void fun()throws IOException,SQLException { ... } 這表示 fun方法可能會丟兩個異常出來,那麼在調用fun的時候就會做好準備,比如可以這樣 try { fun(); }catch(IOException e) { }catch(SQLException e) { }
throw和throws有何不同?如何使用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.