最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談java異常鏈與異常丟失

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

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

之所以需要異常連,是因?yàn)樘幱诖a的可理解性,以及閱讀和程序的可維護(hù)性... 

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

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

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

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

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

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

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

public class TestT {
 public static void a() throws Exception{  //拋出異常給上級(jí)處理
 try {
  b() ;
 } catch (Exception e) {
  throw new Exception(e) ;
 }
 }
 public static void b()  throws Exception{ //拋出異常給上級(jí)處理
 try {
  c() ;
 } catch (Exception e) {
  throw new Exception(e);
 }
 }
 public static void c() throws Exception { //拋出異常給上級(jí)處理
 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  有個(gè)漏洞就是異常缺失..  例如三個(gè)try catch  嵌套在一起 ..內(nèi)部的2個(gè)try catch 就可以省略 catch ....直接 try finally ..

看下面代碼  我們發(fā)現(xiàn)丟失了2個(gè)異常信息

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異常鏈與異常丟失就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java多線程局域網(wǎng)聊天室的實(shí)現(xiàn)

    Java多線程局域網(wǎng)聊天室的實(shí)現(xiàn)

    在學(xué)習(xí)了一個(gè)學(xué)期的java以后,搞了一個(gè)多線程的聊天室,熟悉了一下服務(wù)器和客戶機(jī)的操作。感興趣的小伙伴們可以參考一下
    2021-06-06
  • 在IntelliJ IDEA中創(chuàng)建和運(yùn)行java/scala/spark程序的方法

    在IntelliJ IDEA中創(chuàng)建和運(yùn)行java/scala/spark程序的方法

    這篇文章主要介紹了在IntelliJ IDEA中創(chuàng)建和運(yùn)行java/scala/spark程序的教程,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 深入學(xué)習(xí)java8?中的CompletableFuture

    深入學(xué)習(xí)java8?中的CompletableFuture

    本文主要介紹了java8中的CompletableFuture,CompletableFuture實(shí)現(xiàn)了CompletionStage接口和Future接口,前者是對(duì)后者的一個(gè)擴(kuò)展,增加了異步回調(diào)、流式處理、多個(gè)Future組合處理的能力,使Java在處理多任務(wù)的協(xié)同工作時(shí)更加順暢便利,下文需要的朋友可以參考一下
    2022-05-05
  • Java模擬UDP通信示例代碼

    Java模擬UDP通信示例代碼

    這篇文章主要介紹了Java模擬UDP通信,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • SpringMVC教程之文件上傳與下載詳解

    SpringMVC教程之文件上傳與下載詳解

    本文將對(duì)使用MultipartResolver處理文件上傳的步驟,兩種文件下載方式(直接向response的輸出流中寫(xiě)入對(duì)應(yīng)的文件流、使用 ResponseEntity<byte[]>來(lái)向前端返回文件)等進(jìn)行詳盡介紹,需要的可以參考一下
    2022-12-12
  • 圖解Java?ReentrantLock的條件變量Condition機(jī)制

    圖解Java?ReentrantLock的條件變量Condition機(jī)制

    想必大家都使用過(guò)wait()和notify()這兩個(gè)方法把,他們主要用于多線程間的協(xié)同處理。而RenentrantLock也支持這樣條件變量的能力,而且相對(duì)于synchronized?更加強(qiáng)大,能夠支持多個(gè)條件變量,本文就來(lái)詳細(xì)說(shuō)說(shuō)
    2022-10-10
  • 淺談java8 stream flatMap流的扁平化操作

    淺談java8 stream flatMap流的扁平化操作

    這篇文章主要介紹了淺談java8 stream flatMap流的扁平化操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • RestTemplate設(shè)置超時(shí)時(shí)間及返回狀態(tài)碼非200處理

    RestTemplate設(shè)置超時(shí)時(shí)間及返回狀態(tài)碼非200處理

    這篇文章主要為大家介紹了RestTemplate設(shè)置超時(shí)時(shí)間及返回狀態(tài)碼非200處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 深入理解java重載和重寫(xiě)

    深入理解java重載和重寫(xiě)

    這篇文章主要介紹了Java方法重載和重寫(xiě)原理區(qū)別解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-07-07
  • Maven Shade Plugin 插件使用小結(jié)

    Maven Shade Plugin 插件使用小結(jié)

    本文詳細(xì)解析maven-shade-plugin的用法,教你如何打包可執(zhí)行jar包、排除不需要的依賴,以及通過(guò)class relocation解決包名沖突,具有一定的參考價(jià)值,感興趣的可以了解一下
    2026-07-07

最新評(píng)論

黄冈市| 浦北县| 广州市| 金山区| 大关县| 襄汾县| 本溪| 林芝县| 杭锦后旗| 富民县| 襄汾县| 蓝山县| 聂拉木县| 湛江市| 平定县| 泸水县| 车致| 建湖县| 沙坪坝区| 山东| 东安县| 丹寨县| 杭州市| 溧阳市| 云安县| 司法| 黔南| 日照市| 攀枝花市| 水富县| 洛扎县| 贵南县| 嘉黎县| 崇州市| 抚松县| 镇赉县| 徐闻县| 肥西县| 唐海县| 垫江县| 大城县|