Java_異常

運(yùn)行時(shí)異常

  • 例如數(shù)組越界,繼承與RuntimeException,在編譯期間不是必須要捕獲的異常.

public static void main(String[] args) {
    Object[] arr = {1,2,3};
    try {
        Object obj = arr[10];//try中的異常會(huì)終止異常之后的代碼
        System.out.println("錯(cuò)誤之后"); //錯(cuò)誤之后不執(zhí)行這句
    } catch (Exception e) {//捕獲到異常之后執(zhí)行
        //處理錯(cuò)誤
        //e.printStackTrace();
        System.out.println("catch塊");
    }
    System.out.println("1");
}

 public static void main(String[] args) {
        Object[] arr = {null,null,1};
        //Object value = arr[10];//數(shù)組越界
        try {
//          Object obj = arr[10];
//          arr[1].equals(1);
            //其他異常
            
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("數(shù)組越界");
        }catch (NullPointerException e) {
            System.out.println("空指針異常");
        }catch (RuntimeException e) {
            System.out.println("其他異常");
        }
       System.out.println("1");
        
    }
public static void main(String[] args) {
      add();
    try {
        
    } catch (Exception e) {
        
    }finally{//不管有沒有異常都執(zhí)行
        //關(guān)閉文件
    }
}
  static int add(){
      try {
        int a = 1;
        System.out.println(a);
        return a;
    } catch (Exception e) {
        
    }finally{
        System.out.println("finally");
    }
      return 1;
      
  }
  • 上面是try....catch 還有 try ....catch..catch try...catch...finally
  • 必須在try之后添加catch或finally塊.try塊后可同時(shí)接catch和finally塊,但至少有一個(gè)塊.
  • 必須遵循塊順序:若代碼同時(shí)使用catch和finally塊,則必須將catch塊放try塊之后.
  • finally是一定會(huì)執(zhí)行的.
  • throw拋出異常的兩種情況 1.拋出異常給調(diào)用者處理 2.在catch塊中捕獲到的異常不想處理,拋給調(diào)用者處理.
  • throws 1.拋出異常給調(diào)用者處理 2.當(dāng)函數(shù)中拋出非運(yùn)行時(shí)異常,需要throws聲明一下.

非運(yùn)行時(shí)異常

  • 例如io異常,數(shù)據(jù)庫異常,在程序編譯階段一定要使用try...catch捕獲.
  • 非運(yùn)行異常是RuntimeException以外的異常,類型上都屬于Exception類及其子類,如IOException SQLException等以及用戶自定義的Exception異常, 對(duì)于這種異常,java編譯器強(qiáng)制要求我們必須對(duì)出現(xiàn)的這些異常進(jìn)行catch處理,否則程序就不能編譯通過.所以 面對(duì)這種異常不管我們是否愿意,只能自己去寫一堆catch塊處理可能的異常.
public static void main(String[] args)  throws Exception{
      //創(chuàng)建一個(gè)文件讀取對(duì)象
      FileReader reader = new FileReader("文件的名字");//必須捕獲    非運(yùn)行時(shí)異常
      
//    try {
//        FileReader reader = new FileReader("文件的名字");//必須捕獲    非運(yùn)行時(shí)異常
//  } catch (Exception e) {
//      
//  }
      
 }
  //當(dāng)函數(shù)中拋出非運(yùn)行時(shí)異常 需要throws聲明一下.如果拋出多個(gè) 用,隔開寫  或者直接拋出一個(gè)共同父類
  void fileNotFound()throws FileNotFoundException{
      int a  =10;
      System.out.print(a);
      throw new ArrayIndexOutOfBoundsException();//無錯(cuò)
      //throw new FileNotFoundException;//有錯(cuò)
  }

錯(cuò)誤和異常的不同

異常:可以捕獲的.
錯(cuò)誤:一般是不可處理的 例如 虛擬機(jī)掛了.

1.PNG

throws和throw的不同

  • throw是語句拋出一個(gè)異常
    • 語法 throw(異常對(duì)象); throw e;(自己不處理 拋給調(diào)用這調(diào)用)
  • throws是方法可能拋出異常的聲明(用在聲明方法時(shí),表示該方法可能要拋出異常)
    • 語法:[(修飾符)(返回類型)(方法名)([參數(shù)列表])(throws(異常類型)){.......}

throws出現(xiàn)在方法函數(shù)頭,而throw出現(xiàn)在函數(shù)體中.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市聊闯,隨后出現(xiàn)的幾起案子磷蛹,更是在濱河造成了極大的恐慌椭豫,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捣鲸,死亡現(xiàn)場(chǎng)離奇詭異督笆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)伶贰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門蛛砰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人黍衙,你說我怎么就攤上這事泥畅。” “怎么了琅翻?”我有些...
    開封第一講書人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵位仁,是天一觀的道長。 經(jīng)常有香客問我方椎,道長聂抢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任辩尊,我火速辦了婚禮涛浙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘摄欲。我一直安慰自己轿亮,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開白布胸墙。 她就那樣靜靜地躺著我注,像睡著了一般。 火紅的嫁衣襯著肌膚如雪迟隅。 梳的紋絲不亂的頭發(fā)上但骨,一...
    開封第一講書人閱讀 51,215評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音智袭,去河邊找鬼奔缠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛吼野,可吹牛的內(nèi)容都是我干的校哎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼瞳步,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼闷哆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起单起,我...
    開封第一講書人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤抱怔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后嘀倒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屈留,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年测蘑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绕沈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡帮寻,死狀恐怖乍狐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情固逗,我是刑警寧澤浅蚪,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站烫罩,受9級(jí)特大地震影響惜傲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜贝攒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一盗誊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦哈踱、人聲如沸荒适。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽刀诬。三九已至,卻和暖如春邪财,著一層夾襖步出監(jiān)牢的瞬間陕壹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來泰國打工树埠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留糠馆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓怎憋,卻偏偏與公主長得像又碌,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子盛霎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

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

  • 通俗編程——白話JAVA異常機(jī)制 - 代碼之道赠橙,編程之法 - 博客頻道 - CSDN.NEThttp://blog...
    葡萄喃喃囈語閱讀 3,179評(píng)論 0 25
  • Java異常類型 所有異常類型都是Throwable的子類,Throwable把異常分成兩個(gè)不同分支的子類Erro...
    予別她閱讀 926評(píng)論 0 2
  • 轉(zhuǎn)載:http://www.cnblogs.com/lulipro/p/7504267.html 一愤炸、異常簡介 程...
    SinX竟然被占用了閱讀 975評(píng)論 2 2
  • 本文部分來自于:代碼鋼琴家blog address:www.cnblogs.com/lulipro/p/75042...
    八目朱勇銘閱讀 1,317評(píng)論 0 4
  • 最近又都是雨天期揪,好不容易熬過了一整個(gè)大冬天,但現(xiàn)在還是中招了规个,對(duì)凤薛!感冒了,塞鼻加輕微的喉嚨痛诞仓。 依舊還是習(xí)慣閑時(shí)端...
    樂逗閱讀 248評(píng)論 0 0