精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊Java中的異常及處理

開發(fā) 后端
在編程中異常報錯是不可避免的。特別是在學習某個語言初期,看到異常報錯就抓耳撓腮,常常開玩笑說編程1分鐘,改bug1小時。今天就讓我們來看看什么是異常和怎么合理的處理異常吧!

在編程中異常報錯是不可避免的。特別是在學習某個語言初期,看到異常報錯就抓耳撓腮,常常開玩笑說編程1分鐘,改bug1小時。今天就讓我們來看看什么是異常和怎么合理的處理異常吧!

[[332138]]

異常與error介紹

下面還是先讓我們來看一下基本概念吧!

​ 異常指程序運行過程中出現(xiàn)的非正常現(xiàn)象,例如用戶輸入錯誤、除數(shù)為零、需要處理的文件不存在、數(shù)組下標越界等。異常機制本質就是當程序出現(xiàn)錯誤,程序安全退出的機制。在Java的異常處理機制中,引進了很多用來描述和處理異常的類,稱為異常類。異常類定義中包含了該類異常的信息和對異常進行處理的方法。

​Java是采用面向對象的方式來處理異常的。處理過程:

  • 拋出異常:在執(zhí)行一個方法時,如果發(fā)生異常,則這個方法生成代表該異常的一個對象,停止當前執(zhí)行路徑,并把異常對象提交給JRE。
  • 捕獲異常:JRE得到該異常后,尋找相應的代碼來處理該異常。JRE在方法的調用棧中查找,從生成異常的方法開始回溯,直到找到相應的異常處理代碼為止。

讓我們來看看前面所講到的異常類究竟是個什么東西!

其實所有的異常對象都是派生于Throwable類的一個實例。如果內置的異常類不能夠滿足需要,還可以創(chuàng)建自己的異常類。所有異常的根類為java.lang.Throwable。看看它的家族長什么樣。

聊聊Java中的異常及處理

Throwable類下面主要是兩大門派:Error和Exception。

  • Error是程序無法處理的錯誤,表示運行應用程序中較嚴重問題,系統(tǒng)JVM已經(jīng)處于不可恢復的崩潰狀態(tài)中。例如,說內存溢出和線程死鎖等系統(tǒng)問題。
  • Exception是程序本身能夠處理的異常。Exception類是所有異常類的父類,其子類對應了各種各樣可能出現(xiàn)的異常事件。 通常Java的異常可分為:RuntimeException 運行時異常CheckedException 已檢查異常下面我們來研究研究這兩個異常。

RuntimeException和 CheckedException異同

首先我們先來看看什么是運行時異常。

這類異常通常是由編程錯誤導致的,所以在編寫程序時,并不要求必須使用異常處理機制來處理這類異常,而是經(jīng)常需要通過增加“邏輯處理來避免這些異常”。

比如以下常見的幾種異常:

  • ArithmeticException異常
    1. int b=0
    2. System.out.println(1/b); 
    3. //解決: 
    4.   if(b!=0){ 
    5.      System.out.println(1/b); 
    6.   } 
  • NumberFormatException異常
    1. String str = "1234abcf"
    2. System.out.println(Integer.parseInt(str)); 
    3. //解決:  
    4. Pattern p = Pattern.compile("^\\d+$"); 
    5. Matcher m = p.matcher(str); 
    6. if (m.matches()) { // 如果str匹配代表數(shù)字的正則表達式,才會轉換 
    7.     System.out.println(Integer.parseInt(str)); 
  • ClassCastException異常
    1. Animal a=new Dog(); 
    2. Cat c=(Cat)a; 
    3. //解決:     
    4. if (a instanceof Cat) { 
    5.     Cat c = (Cat) a; 

這里再補充兩點,方便大家更好的理解java異常的機制和處理過程。

  • 在方法拋出異常之后,運行時系統(tǒng)將轉為尋找合適的異常處理器(exception handler)。潛在的異常處理器是異常發(fā)生時依次存留在調用棧中的方法的集合。當異常處理器所能處理的異常類型與方法拋出的異常類型相符時,即為合適的異常處理器。
  • 運行時系統(tǒng)從發(fā)生異常的方法開始,依次回查調用棧中的方法,直至找到含有合適異常處理器的方法并執(zhí)行。當運行時系統(tǒng)遍歷調用棧而未找到合適的異常處理器,則運行時系統(tǒng)終止。同時,意味著Java程序的終止。

上面我們講述了什么是運行時異常以及一些處理方式,下面就再來看看什么是已檢查異常吧!

所有不是RuntimeException的異常,統(tǒng)稱為Checked Exception,又被稱為“已檢查異常”,如IOException、SQLException等以及用戶自定義的Exception異常。 這類異常在編譯時就必須做出處理, 否則無法通過編譯。

通常異常的處理方式有兩種:

  • 使用“try/catch”捕獲異常
  • 使用“throws”聲明異常。

下面就來詳細的聊聊吧!

異常的處理

上面已經(jīng)提了,異常處理通常有2種方式。先看看捕獲異常吧。

捕獲異常是通過3個關鍵詞來實現(xiàn)的:try-catch-finally。用try來執(zhí)行一段程序,如果出現(xiàn)異常,系統(tǒng)拋出一個異常,可以通過它的類型來捕捉(catch)并處理它,最后一步是通過finally語句為異常處理提供一個統(tǒng)一的出口,finally所指定的代碼都要被執(zhí)行。

這個捕獲異常其實也是我們在面試的時候會經(jīng)常碰到的問題。下面我們分別再來對各個部分做一個簡單的提示吧!

(1) try

一個try語句必須帶有至少一個catch語句塊或一個finally語句塊 。當異常處理的代碼執(zhí)行結束以后,不會再回到try語句去執(zhí)行尚未執(zhí)行的代碼。

(2) catch

每個try語句塊可以伴隨一個或多個catch語句,用于處理可能產(chǎn)生的不同類型的異常對象。在此介紹一些常用的方法,這些方法均繼承自Throwable類 。

  • toString ()方法,顯示異常的類名和產(chǎn)生異常的原因。
  • getMessage()方法,只顯示產(chǎn)生異常的原因,但不顯示類名。
  • printStackTrace()方法,用來跟蹤異常事件發(fā)生時堆棧的內容。

這里有一個需要特別注意的地方,那就是catch捕獲異常時的捕獲順序:

如果異常類之間有繼承關系,在順序安排上就需注意。越是頂層的類,越放在下面,再不然就直接把多余的catch省略掉。 也就是說先捕獲子類異常再捕獲父類異常。

(3) finally

finally語句塊中始終都要執(zhí)行,除了遇到了System.exit(0)結束程序運行。針對這個特性,所以我們通常在finally中關閉程序塊已打開的資源,比如:關閉文件流、釋放數(shù)據(jù)庫連接等。

即使try和catch塊中存在return語句,finally語句也會執(zhí)行。是在執(zhí)行完finally語句后再通過return退出。

在這里就有一道非常經(jīng)典的一個面試題。

  1. public class Test { 
  2.     public static void main(String[]args) { 
  3.        System.out.println(new Test().test());; 
  4.     } 
  5.     static int test(){ 
  6.        int x = 1
  7.        try{ 
  8.           retun x; 
  9.        }finally{ 
  10.           System.out.print("jdbk"+ ++x); 
  11.        } 
  12.     } 
  13. // 問輸出結果? 

先解釋哈這里存在的玄妙吧!

看了上面的講述,我們都知道了當try和catch中有return時,finally仍然會執(zhí)行,所以正常邏輯來說此題的答案應該是“jdbk2 2”,但這里存在一個陷阱,那就是:

finally是在return后面的表達式運算后執(zhí)行的(此時并沒有返回運算后的值,而是先把要返回的值保 存起來,不管finally中的代碼怎么樣,返回的值都不會改變,任然是之前保存的值),所以函數(shù)返回值是 在finally執(zhí)行前確定的。因此正確答案應該是:“jdbk2 1”。

還有一點需要注意的就是:finally中最好不要包含return,否則程序會提前退出,返回值不是try或catch中保存的返回值。

接下來再來講講聲明異常吧,它相對來說就比較簡單了。

在一些情況下,當前方法并不需要處理發(fā)生的異常,而是向上傳遞給調用它的方法處理。如果一個方法拋出多個已檢查異常,就必須在方法的首部列出所有的異常,之間以逗號隔開。

  1. public static void readFile(String fileName) throws FileNotFoundException,IOException { 

需要注意的地方就是:

  • 在方法重寫中聲明異常時:子類重寫父類方法時,如果父類方法有聲明異常,那么子類聲明的異常范圍不能超過父類聲明的范圍。
  • 聲明異常我們一般在server層中。在controller層或則數(shù)據(jù)訪問層一般是捕獲異常。

自定義異常

我們?yōu)槭裁匆远x異常?還不是因為在程序中,可能會遇到JDK提供的任何標準異常類都無法充分描述清楚我們想要表達的問題。此時我們就可以創(chuàng)建自己的異常類,即自定義異常類。

那我們怎么自定義異常類呢?相信你看了上面的異常類的家族圖應該就猜到了。不錯,自定義異常類只需從Exception類或者它的子類派生一個子類即可。如果你繼承Exception類,則為受檢查異常,必須對其進行處理;如果不想處理,可以讓自定義異常類繼承運行時異常RuntimeException類。通常我們自定義異常類應該包含2個構造器:一個是默認的構造器,另一個是帶有詳細信息的構造器。這里舉一個例子。

  1. /**IllegalAgeException:非法年齡異常,繼承Exception類*/ 
  2. class IllegalAgeException extends Exception { 
  3.     //默認構造器 
  4.     public IllegalAgeException() { 
  5.  
  6.     } 
  7.     //帶有詳細信息的構造器,信息存儲在message中 
  8.     public IllegalAgeException(String message) { 
  9.         super(message); 
  10.     } 
  11.  
  12.    public void setAge(int age) throws IllegalAgeException { 
  13.         if (age < 0) { 
  14.             throw new IllegalAgeException("人的年齡不應該為負數(shù)"); 
  15.         } 
  16.         this.age = age; 
  17.     } 

最后給大家講述一點使用異常機制的建議:

  • 要避免使用異常處理代替錯誤處理,這樣會降低程序的清晰性,并且效率低下。
  • 處理異常不可以代替簡單測試---只在異常情況下使用異常機制。
  • 不要進行小粒度的異常處理---應該將整個任務包裝在一個try語句塊中。
  • 異常往往在高層處理。

本文授權轉載自公眾號「良許Linux」。良許,世界500強外企Linux開發(fā)工程師,公眾號里分享大量Linux干貨,歡迎關注!

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2010-10-09 16:40:52

2009-06-25 14:05:40

Java應用技巧

2013-04-07 10:01:26

Java異常處理

2011-07-05 10:20:38

java

2017-06-02 10:25:26

Java異常處理

2012-12-21 10:48:20

Java異常

2013-04-01 09:39:06

JavaJava異常

2017-09-26 11:43:12

Java異常和處理

2024-10-08 08:00:00

2018-08-20 16:25:48

編程語言Java異常處理

2017-03-06 16:51:52

Java泛型實現(xiàn)

2023-12-11 14:19:00

Java程序異常

2009-01-05 09:14:17

.NETcatch性能損失

2015-03-16 16:16:15

JavaJava異常處理Java最佳實踐

2024-02-21 12:18:00

Java虛擬機JVM

2023-10-10 13:23:18

空指針異常Java

2011-04-06 10:52:51

Java異常處理

2012-11-19 14:29:38

JavaJava異常異常處理

2021-12-11 19:00:54

Java中斷機制

2022-04-02 08:14:02

JavaThreadLoca數(shù)據(jù)
點贊
收藏

51CTO技術棧公眾號

色网站在线免费观看| 久草视频免费播放| 九九热这里有精品| 亚洲欧美另类图片小说| 国产一区二区三区四区五区在线| 日本视频免费观看| 欧美成人中文| 亚洲欧美另类中文字幕| 午夜免费视频网站| 韩日成人影院| 亚洲欧洲中文日韩久久av乱码| 国产精品久久久久久久久久久久冷| 在线视频一区二区三区四区| 午夜欧美在线| 亚洲性猛交xxxxwww| 在线观看欧美一区二区| 日韩欧美精品电影| 亚洲成人免费电影| 中文字幕精品—区二区日日骚| 天堂在线中文网| 国产伦精一区二区三区| 国产成人精品久久| 日本一区二区免费在线观看| 亚洲一区 二区 三区| 亚洲美女av电影| 制服丝袜av在线| **欧美日韩在线| 欧洲人成人精品| 日韩欧美视频网站| 日本性爱视频在线观看| 国产精品乱人伦一区二区| 欧美日韩三区四区| 性插视频在线观看| 成人网男人的天堂| 亚洲精品免费一区二区三区| 精品国产www| 亚洲深夜av| 午夜精品一区二区三区在线| 欧美日韩在线视频免费| 欧美韩日高清| 自拍亚洲一区欧美另类| 国产精品天天干| 免费一区二区三区视频导航| 亚洲精品大尺度| 国产免费一区二区三区最新6| 精品中文字幕一区二区三区四区| 91精品在线麻豆| 在线观看免费视频高清游戏推荐| 国产精品字幕| 欧美无人高清视频在线观看| 992kp快乐看片永久免费网址| 综合日韩av| 欧美性猛交视频| 国产精品免费观看久久| 中文字幕成在线观看| 精品久久久久久久大神国产| 18禁男女爽爽爽午夜网站免费 | 久久久久国产精品免费网站| 黄色一级片中国| 欧美三级乱码| 国内外成人免费激情在线视频网站| 久久久久亚洲av片无码下载蜜桃 | 欧美色图色综合| 玖玖在线播放| 91久久精品国产91性色tv| 欧美日韩中文在线视频| 日韩美女在线看免费观看| 欧美艳星brazzers| 激情五月俺来也| 成人黄色91| 日韩欧美不卡在线观看视频| av在线天堂网| 婷婷综合福利| 一区二区三区 在线观看视| 女教师淫辱の教室蜜臀av软件| 久久五月天小说| 欧美大片大片在线播放| 日韩精品在线不卡| 久久亚洲欧美| 91精品久久久久久久久久久久久| jizz中国女人| 97国产一区二区| 亚洲va久久久噜噜噜久久狠狠 | 鲁一鲁一鲁一鲁一av| 四虎国产精品免费久久| 精品日韩一区二区三区免费视频| 日批在线观看视频| 成人6969www免费视频| 久久伊人91精品综合网站| 久久精品视频日本| 奇米影视一区二区三区| 国产91aaa| 国产乱理伦片a级在线观看| 专区另类欧美日韩| 成人免费毛片网| 亚洲电影二区| 亚洲精品一区在线观看香蕉| 天天色天天综合| 99国产精品久久久久久久成人热| 国产精品入口福利| 超碰在线播放97| 国产日韩欧美精品综合| 男人天堂a在线| 九七影院97影院理论片久久 | 欧美影视一区二区三区| 国产精久久久久| 欧美最新另类人妖| 欧美精品videos另类日本| 中文字幕在线观看精品| 成人亚洲一区二区一| 一区二区av| 成人香蕉视频| 欧美大黄免费观看| 亚洲色图100p| 天堂av在线一区| 国产精选在线观看91| 国产黄网站在线观看| 在线观看日韩国产| 亚洲观看黄色网| 欧美精品综合| 成人午夜在线视频一区| 久草福利在线视频| 黑人巨大精品欧美一区二区三区| 波多野结衣网页| 欧美aaaa视频| 国产精品女人网站| 可以在线观看的黄色| 亚洲一区二区三区四区在线观看| 中文字幕资源在线观看| 国产免费av一区二区三区| 亚州精品天堂中文字幕| www.污视频| 亚洲欧美日韩人成在线播放| 91插插插插插插插插| 国产欧美日韩影院| 秋霞av国产精品一区| 婷婷在线免费视频| 亚洲午夜精品一区二区三区他趣| 天天av天天操| 在线中文字幕第一区| 91丝袜美腿美女视频网站| 求av网址在线观看| 欧美调教femdomvk| 欧美三级视频网站| 美国十次了思思久久精品导航| 日本电影一区二区三区| 五月激情久久| 伊人久久久久久久久久久| 99re这里只有精品在线| 久久久久国产精品麻豆| 精品www久久久久奶水| 欧美精品第一区| 国产97免费视| 91精品国产91久久久久游泳池| 欧美日韩国产精品自在自线| 日韩av毛片在线观看| 极品美女销魂一区二区三区免费| 日韩精品av一区二区三区| 99久久精品一区二区成人| 在线精品播放av| 91成人在线免费| 亚洲欧洲在线观看av| 日韩不卡的av| 亚洲高清激情| 日本在线播放一区| 亚洲一区二区小说| 欧美极品少妇与黑人| 深夜福利视频网站| 色素色在线综合| 一级二级黄色片| 国产在线视频精品一区| 黄色网在线视频| 婷婷成人影院| 国产精品视频网站| 激情av在线| 亚洲欧美激情视频| 国产精品无码在线播放| 亚洲国产va精品久久久不卡综合 | 亚洲欧洲精品一区二区三区| 91香蕉国产线在线观看| 一本一本久久| 在线成人性视频| jazzjazz国产精品久久| 国产v综合ⅴ日韩v欧美大片| 久草免费在线| 亚洲电影免费观看| 亚洲av无码乱码国产精品fc2| 亚洲免费伊人电影| 大黑人交xxx极品hd| 精品在线观看免费| 欧美极品欧美精品欧美| 成人三级视频| 国产伦视频一区二区三区| 国产成人精品123区免费视频| 欧美人在线视频| 国产天堂在线| 精品久久久久久综合日本欧美| 成年人视频免费| 亚洲一二三四区不卡| 亚洲自拍偷拍图| 国产成人免费视频网站 | 99国产精品视频免费观看| 午夜久久久精品| 亚洲深夜福利| www.男人天堂网| 97精品在线| 欧美成人在线免费观看| 日韩成人18| 国产精品爽黄69天堂a| 第一av在线| 精品国偷自产在线视频99| 神马午夜精品95| 欧美一区二区高清| 日韩久久久久久久久久| 亚洲va欧美va天堂v国产综合| 999精品在线视频| 国产欧美日韩精品a在线观看| 久久久午夜精品福利内容| 精品一区二区在线观看| 色多多视频在线播放| 亚洲欧美清纯在线制服| 国产精品va在线观看无码| 亚洲精品在线观看91| 色爱区成人综合网| 国产乱码精品一区二区亚洲| 激情视频一区二区| 亚洲成人黄色| av成人综合网| 亚洲国产中文在线| 91丨九色丨国产在线| 日本电影久久久| 国产精品一二区| 欧美激情啪啪| 91精品国产自产在线| 黄色成人小视频| 国产欧美一区二区三区在线| 久久天堂影院| 国产乱人伦真实精品视频| 九色成人搞黄网站| 国产精品99久久久久久久久 | 黄av在线免费观看| 日韩视频在线一区| 在线国产91| 色偷偷偷亚洲综合网另类| 高清av电影在线观看| 国产亚洲精品久久久| 97人人在线| 日韩网站免费观看高清| 黄色网页网址在线免费| 久久视频在线免费观看| 2024最新电影在线免费观看| 欧美日韩爱爱视频| 欧美xxxbbb| 97在线精品视频| 日韩在线伦理| 国产精品高潮呻吟久久av野狼 | 国产精品国产精品国产专区蜜臀ah| 免费看日产一区二区三区 | 九九综合九九| 亚洲国产另类久久久精品极度| 日韩午夜电影网| 国产奶头好大揉着好爽视频| 亚洲精品一区二区妖精| 日本大片免费看| 国产精品嫩草99av在线| 成年人在线观看视频免费| 蜜桃91丨九色丨蝌蚪91桃色| 午夜激情视频网| 成人av在线电影| 久久精品国产亚洲av麻豆| 国产精品视频麻豆| 欧美黑人一级片| 精品久久久久久久久中文字幕 | 日本不卡123| 国产精品自在自线| 豆国产96在线|亚洲| 亚洲做受高潮无遮挡| 自拍偷自拍亚洲精品播放| 久久午夜无码鲁丝片| 日韩欧美国产中文字幕| 亚洲永久精品视频| 亚洲成人激情在线| 免费av在线电影| 欧美精品免费看| 惠美惠精品网| 91嫩草国产在线观看| 亚洲老女人视频免费| 公共露出暴露狂另类av| 国产亚洲毛片| 91精产国品一二三产区别沈先生| 99精品久久免费看蜜臀剧情介绍| 日韩一区二区三区四区视频| 亚洲一区在线视频观看| 中文字幕永久在线| 精品欧美黑人一区二区三区| 国产大片在线免费观看| 欧美国产亚洲精品久久久8v| 日韩网站中文字幕| 国产欧美综合精品一区二区| 久久综合国产| 少妇高潮喷水久久久久久久久久| 激情综合一区二区三区| 日本黄色特级片| 亚洲一区二区精品久久av| 波多野结衣爱爱| 亚洲成人网在线观看| 久草中文在线| 国产精品日韩电影| 西野翔中文久久精品国产| 日本精品福利视频| 日本91福利区| 深爱五月激情网| 午夜精品久久久久影视| 精品欧美在线观看| 综合久久五月天| 精品成人av| 九九九九精品| 国语对白精品一区二区| 制服丝袜中文字幕第一页 | 日韩不卡视频一区二区| 日本亚洲天堂网| 女人又爽又黄免费女仆| 天天操天天综合网| 人妻与黑人一区二区三区| 久久高清视频免费| 日韩美香港a一级毛片| 色婷婷精品国产一区二区三区| 亚洲中字在线| 黄色免费视频网站| 亚洲一区欧美一区| 精品久久无码中文字幕| 成人97在线观看视频| 欧美激情不卡| 一区二区高清视频| 蜜桃视频一区二区三区在线观看| 国产一区二区三区四区五区六区| 午夜精品福利一区二区蜜股av| 亚洲精品国产suv一区| 久久夜精品va视频免费观看| 国产精品成人3p一区二区三区| 亚洲精品二区| 另类小说一区二区三区| 日本精品久久久久中文| 欧美日韩高清不卡| 美女免费久久| 亚洲www在线| 最新国产精品| 亚洲欧美日韩偷拍| 丁香五六月婷婷久久激情| 视频一区二区三区在线看免费看 | 波多野结衣一区二区三区四区| 亚洲精品美女在线观看| 国产中文在线播放| 六月婷婷久久| 日韩精品亚洲一区| 99精品欧美一区二区| 精品视频一区二区不卡| 欧美极品另类| av在线不卡一区| 亚洲人妖在线| 97超碰在线免费观看| 欧美午夜精品久久久久久超碰| 1769在线观看| 成人黄动漫网站免费| 伊人精品在线| 色一情一交一乱一区二区三区| 欧美视频三区在线播放| 麻豆网站在线免费观看| 99久久精品免费看国产四区| 国内精品久久久久久久影视麻豆| 国产乱了高清露脸对白| 在线免费观看日本欧美| 黄色一级大片在线免费看产| 91偷拍精品一区二区三区| 99成人免费视频| 国产亚洲精品精品精品| 日韩亚洲欧美在线观看| 蜜桃麻豆av在线| 一个色的综合| caoporn国产精品| 中文字幕在线视频第一页| 欧美精品在线观看| 精品国产不卡| 少妇欧美激情一区二区三区| 欧美性生交大片免网| 黄页视频在线播放| 国严精品久久久久久亚洲影视 | 好看的亚洲午夜视频在线| 一区二区三区免费在线观看视频| 欧美综合在线视频| 激情av在线| 一本色道久久99精品综合| www.欧美日韩| 国产麻豆91视频| 热99精品只有里视频精品| 亚洲国产不卡| 一级片视频免费看| 亚洲第一区第一页| www.91精品| 国产又猛又黄的视频|