欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談java異常鏈與異常丟失

 更新時間:2016年09月12日 10:21:27   投稿:jingxian  
下面小編就為大家?guī)硪黄獪\談java異常鏈與異常丟失。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

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

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

我們?nèi)绻梢詫惓4?lián)成一個異常連,然后我們只捕獲我們的包裝 異常,我們知道 RuntimeException 以及其派生類可以不進(jìn)行try catch 而被jvm自動捕獲并處理..

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

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

只有 Throwable ----> Exception  RuntimeException  Error提供了 構(gòu)造方法實現(xiàn)異常鏈的機(jī)制。。。其他異常需要通過initCause來

構(gòu)造異常連..

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

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  嵌套在一起 ..內(nèi)部的2個try catch 就可以省略 catch ....直接 try finally ..

看下面代碼  我們發(fā)現(xiàn)丟失了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異常鏈與異常丟失就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • maven下載依賴失敗問題及解決

    maven下載依賴失敗問題及解決

    這篇文章主要介紹了maven下載依賴失敗問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 基于RocketMQ推拉模式詳解

    基于RocketMQ推拉模式詳解

    這篇文章主要介紹了RocketMQ推拉模式的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 詳解Java的線程狀態(tài)

    詳解Java的線程狀態(tài)

    本文主要為大家詳細(xì)介紹一下Java的線程狀態(tài),文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)有一定的幫助,感興趣的小伙伴可以跟隨小編學(xué)習(xí)一下
    2022-11-11
  • 超詳細(xì)介紹idea中java程序打jar包的兩種方式

    超詳細(xì)介紹idea中java程序打jar包的兩種方式

    這篇文章主要介紹了超詳細(xì)介紹idea中java程序打jar包的兩種方式一種是可直接執(zhí)行的runnable jar文件,另一種是包含多個主類,運(yùn)行時需要指定主類全類名的jar包,感興趣的可以了解一下
    2020-07-07
  • java?http請求設(shè)置代理Proxy的兩種常見方法

    java?http請求設(shè)置代理Proxy的兩種常見方法

    代理是一種常見的設(shè)計模式,其目的就是為其他對象提供一個代理以控制對某個對象的訪問,這篇文章主要給大家介紹了關(guān)于java?http請求設(shè)置代理Proxy的兩種常見方法,需要的朋友可以參考下
    2023-11-11
  • idea在plugins中搜不到插件的解決方法

    idea在plugins中搜不到插件的解決方法

    本文主要介紹了idea在plugins中搜不到插件的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • SpringBoot中使用@scheduled定時執(zhí)行任務(wù)的坑

    SpringBoot中使用@scheduled定時執(zhí)行任務(wù)的坑

    本文主要介紹了SpringBoot中使用@scheduled定時執(zhí)行任務(wù)的坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • springbatch的封裝與使用實例詳解

    springbatch的封裝與使用實例詳解

    主要實現(xiàn)批量數(shù)據(jù)的處理,我對batch進(jìn)行的封裝,提出了jobBase類型,具體job需要實現(xiàn)它即可。這篇文章主要介紹了springbatch的封裝與使用 ,需要的朋友可以參考下
    2019-04-04
  • MyBatis 如何簡化的 JDBC(思路詳解)

    MyBatis 如何簡化的 JDBC(思路詳解)

    MyBatis 是一個 持久層 框架,用于 簡化JDBC開發(fā),這篇文章主要介紹了MyBatis 如何簡化的 JDBC(思路詳解),需要的朋友可以參考下
    2023-03-03
  • Java中使用Jedis操作Redis的實現(xiàn)代碼

    Java中使用Jedis操作Redis的實現(xiàn)代碼

    本篇文章主要介紹了Java中使用Jedis操作Redis的實現(xiàn)代碼。詳細(xì)的介紹了Redis的安裝和在java中的操作,具有一定的參考價值,有興趣的可以了解一下
    2017-05-05

最新評論