Java 異常處理——聲明图贸、拋出異常

聲明檢查類型異常 throws

?? 概述:如果一個方法可能會出現(xiàn)異常遮糖,但我們不想使用try..catch 精準(zhǔn)捕捉處理異常,只想模糊處理狞膘,可以在方法聲明處用throws子句來聲明拋出異常揩懒。其實程序默認的報錯方式就是拋出。

?? 例如:如果我們需要讀取一份文件挽封,但是有可能讀取的文件不存在已球,或者內(nèi)容為空,所以我們需要告訴編譯器可能會出現(xiàn)FileNotFoundException類異常

public FileInputSteam(String name) throws FileNotFoundException辅愿,ArrayIndexOutOfBoundsException // 可以拋出多個異常
  1. 注意:子類拋出的異常必須與父類一致智亮,或者是父類異常的子類。

  2. 注意:throws 會將異常拋給調(diào)用的語句塊点待。比如 f1( )方法里面拋出了FileNotFoundException異常阔蛉,若 f2( )方法調(diào)用 f1( )方法,f2( )方法就得處理f1( )方法里面拋出的FileNotFoundException異常癞埠。前提是這個異常是 檢查型/運行時異常状原,非檢查型異常不報錯,因為非檢查型異常本身就默認有檢查方式拋出苗踪。

    • 處理方式
      • f2( )方法也拋出FileNotFoundException異常
      • f2( )方法使用try..catch捕捉異常

拋出異常 throw

??拋出異常很簡單颠区,拋出后就不用管了

  • throw 將產(chǎn)生的異常拋出(強調(diào)的是動作),拋出的既可以是異常的引用通铲,也可以是異常對象毕莱。注意與 throws 的區(qū)別
  • 首先要決定拋出什么異常,比如 throw new IOException
  • 也可以是 var e = new IOException( ) ; throw e ;

創(chuàng)建自定義異常類

  • 概述:如果遇到現(xiàn)有任何標(biāo)準(zhǔn)異常類都無法描述清楚的問題颅夺,這種情況下就需要創(chuàng)建一個屬于自己的異常類了朋截。
  • 如何:我們要做的就是定義一個派生于Exception 的類,或者子類吧黄,比如IOException部服。
    • 超類Throwable 的 toString 會返回字符串,很好用
    • 創(chuàng)建異常類應(yīng)該包含兩個構(gòu)造器拗慨,一個是默認的構(gòu)造器饲宿,一個是包含詳細描述信息的構(gòu)造器厦酬。
//創(chuàng)建自定義異常類
class FileFormatException extend IOException{
    public FileFormatException(){}  // 默認的構(gòu)造器
    public FileFormatException(String gripe){  // 詳細描述信息的構(gòu)造器
        super(gripe);
    }
}
// 拋出自定義異常類
String readData(Buffered in) throws FileFormatException{
    ......
    while(...){
        if (. . .){
            throw new FileFormatException();
        }
      ......
    }
    return ...;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胆描,一起剝皮案震驚了整個濱河市瘫想,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌昌讲,老刑警劉巖国夜,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異短绸,居然都是意外死亡车吹,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門醋闭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窄驹,“玉大人,你說我怎么就攤上這事证逻±植海” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵囚企,是天一觀的道長丈咐。 經(jīng)常有香客問我,道長龙宏,這世上最難降的妖魔是什么棵逊? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮银酗,結(jié)果婚禮上辆影,老公的妹妹穿的比我還像新娘。我一直安慰自己黍特,他們只是感情好蛙讥,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著衅澈,像睡著了一般键菱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上今布,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天经备,我揣著相機與錄音,去河邊找鬼部默。 笑死侵蒙,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的傅蹂。 我是一名探鬼主播纷闺,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼算凿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了犁功?” 一聲冷哼從身側(cè)響起氓轰,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浸卦,沒想到半個月后署鸡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡限嫌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年靴庆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怒医。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡炉抒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出稚叹,到底是詐尸還是另有隱情焰薄,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布入录,位于F島的核電站蛤奥,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏僚稿。R本人自食惡果不足惜凡桥,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蚀同。 院中可真熱鬧缅刽,春花似錦、人聲如沸蠢络。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽刹孔。三九已至啡省,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間髓霞,已是汗流浹背卦睹。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留方库,地道東北人结序。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像纵潦,于是被迫代替她去往敵國和親徐鹤。 傳聞我的和親對象是個殘疾皇子垃环,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一、異常的概念 異常指的是運行期出現(xiàn)的錯誤返敬,也就是當(dāng)程序開始執(zhí)行以后執(zhí)行期出現(xiàn)的錯誤遂庄。 出現(xiàn)錯誤時觀察錯誤的名字和...
    Java丶python攻城獅閱讀 225評論 0 0
  • 1. 概述 在本文中, 我們將介紹Java 中異常處理的基礎(chǔ)知識,及其一些常見的坑. 2. 前置知識 2.1. 什...
    bern85閱讀 736評論 0 0
  • 概念介紹 異常是發(fā)生在程序執(zhí)行過程中阻礙程序正常執(zhí)行的錯誤事件救赐,當(dāng)一個程序出現(xiàn)錯誤時涧团,可能的情況有如下3種: 語法...
    niaoge2016閱讀 5,180評論 2 20
  • JAVA 異常類型結(jié)構(gòu) Error 和 Exeption 受查異常和非受查異常 異常的拋出與捕獲 直接拋出異常 封...
    哦00閱讀 390評論 0 0
  • 異常是程序中的一些錯誤,但并不是所有的錯誤都是異常经磅,并且錯誤有時候是可以避免的。 比如說钮追,你的代碼少了一個分號预厌,那...
    好名字都被取完了呀閱讀 180評論 0 1