Java中throw與throws的不同

來源:互聯網
上載者:User
Java中throw與throws的不同

/////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)
{
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.