throws和throw的區(qū)別
這兩者雖然看起來只有一個(gè)s的區(qū)別,但是作用完全不一樣。
/////java處理異常方式///////////////////////////////
在java代碼中如果發(fā)生異常的話,jvm會(huì)拋出異常對(duì)象,導(dǎo)致程序代碼中斷,這個(gè)時(shí)候jvm在做的操作就是:創(chuàng)建異常對(duì)象,然后拋出,比如:





這5句代碼運(yùn)行到第四句會(huì)中斷,因?yàn)閖vm拋出了異常
////throw的作用/////////////////////////////////////////
手動(dòng)拋出異常
但是有時(shí)候有些錯(cuò)誤在jvm看來不是錯(cuò)誤,比如說



很正常的整形變量賦值,但是在我們眼中看來就不正常,誰的年齡會(huì)是負(fù)的呢。 所以我們需要自己手動(dòng)引發(fā)異常,這就是throw的作用。








////throws的作用///////////////////////////////////
聲明方法可能回避的異常
有異常被拋出了,就要做處理,所以java中有try-catch。可是有時(shí)候一個(gè)方法中產(chǎn)生了異常,但是不知道該怎么處理它,那么就放著不管,當(dāng)有異常拋出時(shí)會(huì)中斷該方法,而異常被拋到這個(gè)方法的調(diào)用者那里。這個(gè)有點(diǎn)像下屬處理不了的問題就交到上司手里一樣,這種情況稱為回避異常。
但是這使得調(diào)用這個(gè)方法就有了危險(xiǎn),因?yàn)檎l也不知道這個(gè)方法什么時(shí)候會(huì)丟一個(gè)什么樣的異常給調(diào)用者,所以在定義方法時(shí),就需要在方法頭部分使用throws來聲明這個(gè)方法可能回避的異常。





這表示 fun方法可能會(huì)丟兩個(gè)異常出來,那么在調(diào)用fun的時(shí)候就會(huì)做好準(zhǔn)備,比如可以這樣




posted on 2008-01-19 18:47 々上善若水々 閱讀(2483) 評(píng)論(5) 編輯 收藏 所屬分類: J2SE