国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

淺談java異常鏈與異常丟失

2019-11-26 13:50:31
字體:
來源:轉載
供稿:網友

1、在java的構造方法中提供了 異常鏈.. 也就是我們可以通過構造方法不斷的將 異常串聯成一個異常鏈...  

之所以需要異常連,是因為處于代碼的可理解性,以及閱讀和程序的可維護性... 

我們知道我們每拋出一個異常都需要進行try catch ...那么豈不是代碼很臃腫...

我們如果可以將異常串聯成一個異常連,然后我們只捕獲我們的包裝 異常,我們知道 RuntimeException 以及其派生類可以不進行try catch 而被jvm自動捕獲并處理..

當然了我們可以自己定義自己的異常類從RuntimeException中派生,然后通過一級一級的包裝,假如異常出現了JWM通過我們的自定義RuntimeException直接輸出 cause

(原因)也就是 我們的異常鏈..因此我們的所有異常也就輸出了,這樣就減少了很多的異常處理的代碼。。。

只有 Throwable ----> Exception  RuntimeException  Error提供了 構造方法實現異常鏈的機制。。。其他異常需要通過initCause來

構造異常連..

下面一段代碼就是異常連的一個簡單示例...可以打印整個程序過程中出現的異常。。

public class TestT { public static void a() throws Exception{  //拋出異常給上級處理 try {  b() ; } catch (Exception e) {  throw new Exception(e) ; } } public static void b()  throws Exception{ //拋出異常給上級處理 try {  c() ; } catch (Exception e) {  throw new Exception(e); } } public static void c() throws Exception { //拋出異常給上級處理 try {  throw new NullPointerException("c 異常鏈中的空指針異常..") ; } catch (NullPointerException e) {  throw new Exception(e) ; } }  public static void main(String[]args){  try {  a() ; } catch (Exception e) {  e.printStackTrace(); }  }}

2、 try catch ...finally  有個漏洞就是異常缺失..  例如三個try catch  嵌套在一起 ..內部的2個try catch 就可以省略 catch ....直接 try finally ..

看下面代碼  我們發現丟失了2個異常信息

public class MyTest { public void open() throws Exception{ throw new Exception(){  public String toString() {  return this.getClass().getName()+"CeryImmportException";  }; } ;  } public void close() throws Exception{ throw new Exception(){  public String toString() {    return this.getClass().getName()+"close Exception" ;  }; } ; } public void three() throws Exception{    throw new Exception(){     public String toString() {            return this.getClass().getName() + "three" ;     };    } ;  } public static void main(String[]agrs){   MyTest mt=new MyTest() ; try{ try{ try{  mt.open();   }finally {   System.out.println("delete open");    mt.close() ; } } finally{  System.out.println("delete close");  mt.three() ;   } }catch(Exception ex){  ex.printStackTrace();  } } }

以上這篇淺談java異常鏈與異常丟失就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宣城市| 星子县| 商都县| 兴城市| 日照市| 桂林市| 内江市| 永年县| 新田县| 洪洞县| 柳江县| 寿光市| 南丰县| 肇东市| 无锡市| 青冈县| 黔西县| 长垣县| 通州市| 荔波县| 岱山县| 乌兰县| 宜宾市| 滦平县| 北票市| 巴彦淖尔市| 沾益县| 莲花县| 德安县| 锦州市| 尤溪县| 马鞍山市| 荃湾区| 孝昌县| 老河口市| 安图县| 文登市| 株洲县| 大冶市| 广元市| 黄平县|