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

Java異常處理中的一些特殊情況舉例

 更新時(shí)間:2015年11月13日 08:50:07   投稿:goldensun  
這篇文章主要介紹了Java異常處理中的一些特殊情況舉例,分別是只用try和finally不用catch,以及finally語句不被執(zhí)行的情況,需要的朋友可以參考下

只使用try和finally不使用catch的原因和場景
JDK并發(fā)工具包中,很多異常處理都使用了如下的結(jié)構(gòu),如AbstractExecutorService,即只有try和finally沒有catch。

class X 
{
 private final ReentrantLock lock = new ReentrantLock();
 // ...
 
 public void m()
 {
 lock.lock(); // block until condition holds
 try 
 {
  // ... method body
 } finally
 {
  lock.unlock()
 }
  }
}

為什么要使用這種結(jié)構(gòu)?有什么好處呢?先看下面的代碼

public void testTryAndFinally(String name)
 {
  try
  {
   name.length();// NullPointerException
  }
  finally
  {
   System.out.println("aa");
  }
 }

傳遞null該方法的執(zhí)行結(jié)果是:在控制臺(tái)打印aa,并拋出NullPointerException。執(zhí)行流程是先執(zhí)行try塊,出現(xiàn)異常后執(zhí)行finally塊,最后向調(diào)用者拋出try中的異常。這種執(zhí)行結(jié)果是很正常的,因?yàn)闆]有catch異常處理器,所有該方法只能將產(chǎn)生的異常向外拋;因?yàn)橛衒inally,所以會(huì)在方法返回拋出異常之前,先執(zhí)行finally代碼塊中的清理工作。

這種做法的好處是什么呢?對(duì)于testTryAndFinally來說,它做了自己必須要做的事(finally),并向外拋出自己無法處理的異常;對(duì)于調(diào)用者來說,能夠感知出現(xiàn)的異常,并可以按照需要進(jìn)行處理。也就是說這種結(jié)構(gòu)實(shí)現(xiàn)了職責(zé)的分離,實(shí)現(xiàn)了異常處理(throw)與異常清理(finally)的解耦,讓不同的方法專注于自己應(yīng)該做的事。那什么時(shí)候使用try-finally,什么時(shí)候使用try-catch-finally呢?很顯然這 取決于方法本身是否能夠處理try中出現(xiàn)的異常 。如果自己可以處理,那么直接catch住,不用拋給方法的調(diào)用者;如果自己不知道怎么處理,就應(yīng)該將異常向外拋,能夠讓調(diào)用者知道發(fā)生了異常。即在方法的簽名中聲明throws可能出現(xiàn)而自己又無法處理的異常,但是在方法內(nèi)部做自己應(yīng)該的事情。


finally語句不會(huì)被執(zhí)行的情況
Java的finally語句不會(huì)被執(zhí)行的唯一情況是:先執(zhí)行了用于終止程序的System.exit()方法
 

public class Test  
{  
    public static void main(String[] args)  
   {  
       try 
       {  
           System.out.println("Start");  
           System.exit(0);  
 
       }finally 
       {  
           System.out.println("Finally");  
       }  
 
       System.out.println("End");  
    }  
} 

輸出結(jié)果為:

Start

 
當(dāng)然,如果在執(zhí)行一般的沒有System.exit()語句的try語句時(shí),突然斷電了,這時(shí)所有進(jìn)程都會(huì)終止,也不會(huì)執(zhí)行finally語句。

相關(guān)文章

  • Java高性能緩存框架之Caffeine詳解

    Java高性能緩存框架之Caffeine詳解

    這篇文章主要介紹了Java高性能緩存框架之Caffeine詳解,Caffeine是一個(gè)基于Java8的高性能緩存框架,號(hào)稱趨于完美,Caffeine受啟發(fā)于Guava?Cache的API,使用API和Guava是一致的,需要的朋友可以參考下
    2023-12-12
  • 關(guān)于springboot集成阿里云短信的問題

    關(guān)于springboot集成阿里云短信的問題

    這篇文章主要介紹了springboot集成阿里云短信的方法,本文通過實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • java application maven項(xiàng)目打自定義zip包實(shí)例(推薦)

    java application maven項(xiàng)目打自定義zip包實(shí)例(推薦)

    下面小編就為大家?guī)硪黄猨ava application maven項(xiàng)目打自定義zip包實(shí)例(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • java 基于maven多模塊合并打包部署的操作過程

    java 基于maven多模塊合并打包部署的操作過程

    這篇文章主要介紹了java 基于maven多模塊合并打包部署的操作過程,本文通過實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • Spring注解驅(qū)動(dòng)之AOP功能測試

    Spring注解驅(qū)動(dòng)之AOP功能測試

    這篇文章主要介紹了Spring注解驅(qū)動(dòng)之AOP功能測試,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java+Eclipse+Selenium環(huán)境搭建的方法步驟

    Java+Eclipse+Selenium環(huán)境搭建的方法步驟

    這篇文章主要介紹了Java+Eclipse+Selenium環(huán)境搭建的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-06-06
  • JavaWeb使用Cookie模擬實(shí)現(xiàn)自動(dòng)登錄功能(不需用戶名和密碼)

    JavaWeb使用Cookie模擬實(shí)現(xiàn)自動(dòng)登錄功能(不需用戶名和密碼)

    不需要填寫用戶名和密碼自動(dòng)登錄系統(tǒng),其實(shí)現(xiàn)思路使用cookie模擬瀏覽器自動(dòng)登錄,對(duì)cookie實(shí)現(xiàn)自動(dòng)登錄功能感興趣的朋友一起學(xué)習(xí)吧
    2016-08-08
  • SpringBoot項(xiàng)目yml配置文件不自動(dòng)提示解決方案

    SpringBoot項(xiàng)目yml配置文件不自動(dòng)提示解決方案

    這篇文章主要介紹了SpringBoot項(xiàng)目配置文件.yaml/.yml文件編寫時(shí)沒有自動(dòng)提示的解決方案,文章通過圖文結(jié)合的方式給大家講解的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • Java遞歸遍歷樹形結(jié)構(gòu)的實(shí)現(xiàn)代碼

    Java遞歸遍歷樹形結(jié)構(gòu)的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Java遞歸遍歷樹形結(jié)構(gòu)的相關(guān)資料,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2016-03-03
  • Java?Bean?作用域及它的幾種類型介紹

    Java?Bean?作用域及它的幾種類型介紹

    這篇文章主要介紹了Java?Bean作用域及它的幾種類型介紹,Spring框架作為一個(gè)管理Bean的IoC容器,那么Bean自然是Spring中的重要資源了,那Bean的作用域又是什么,接下來我們一起進(jìn)入文章詳細(xì)學(xué)習(xí)吧
    2022-09-09

最新評(píng)論

多伦县| 延庆县| 越西县| 会宁县| 公安县| 松原市| 富源县| 泗洪县| 开封市| 海林市| 红河县| 法库县| 板桥市| 通许县| 罗江县| 阜宁县| 景宁| 海兴县| 尼勒克县| 达尔| 营山县| 高台县| 修武县| 乐业县| 格尔木市| 宿迁市| 陆良县| 碌曲县| 瓦房店市| 洞头县| 额尔古纳市| 丘北县| 凤翔县| 商洛市| 石河子市| 灌阳县| 靖西县| 涟源市| 安阳市| 丰都县| 伊吾县|