一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java異常處理中的一些特殊情況舉例

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

2020-01-20 11:25goldensun JAVA教程

這篇文章主要介紹了Java異常處理中的一些特殊情況舉例,分別是只用try和finally不用catch,以及finally語句不被執行的情況,需要的朋友可以參考下

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class X
{
 private final ReentrantLock lock = new ReentrantLock();
 // ...
 
 public void m()
 {
 lock.lock(); // block until condition holds
 try
 {
  // ... method body
 } finally
 {
  lock.unlock()
 }
  }
}

為什么要使用這種結構?有什么好處呢?先看下面的代碼

?
1
2
3
4
5
6
7
8
9
10
11
public void testTryAndFinally(String name)
 {
  try
  {
   name.length();// NullPointerException
  }
  finally
  {
   System.out.println("aa");
  }
 }

傳遞null該方法的執行結果是:在控制臺打印aa,并拋出NullPointerException。執行流程是先執行try塊,出現異常后執行finally塊,最后向調用者拋出try中的異常。這種執行結果是很正常的,因為沒有catch異常處理器,所有該方法只能將產生的異常向外拋;因為有finally,所以會在方法返回拋出異常之前,先執行finally代碼塊中的清理工作。

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


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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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"); 
    
}

輸出結果為:

?
1
Start

 
當然,如果在執行一般的沒有System.exit()語句的try語句時,突然斷電了,這時所有進程都會終止,也不會執行finally語句。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美日韩成人在线视频 | 免费看视频 | 欧美ⅹxxxhd3d | 国产精品久久久久久久久 | 国产精品拍拍拍福利在线观看 | 91精品久久一区二区三区 | h视频免费高清在线观看 | 亚洲国产精品嫩草影院久久 | 小妇人电影免费完整观看2021 | 91在线老师啪国自产 | 美女视频久久 | 日韩欧美精品 | 欧美日韩国产超高清免费看片 | 欧美日韩亚洲高清不卡一区二区三区 | 5151hh四虎国产精品 | 挺进白嫩老师下面视频 | 99热这里只有精品在线 | 超鹏97国语| 99精品免费在线 | 99热最新在线观看 | 女教师巨大乳孔中文字幕免费 | 华人亚洲欧美精品国产 | 日本在线观看视频网站 | 日本免费的一级绿象 | 日本阿v在线播放 | 99免费在线视频 | ysav67| 九九大香尹人视频免费 | 99在线在线视频免费视频观看 | 日本三级成人中文字幕乱码 | 四虎tv在线观看884aa | 日本情趣视频 | 91桃花视频 | 精品久久久久免费极品大片 | 日本在线观看免费观看完整版 | 免费理伦片在线观看全网站 | 精品精品国产自在久久高清 | 996热视频| 亚洲女同一区二区 | 国产福利视频一区二区微拍视频 | 色五夜婷婷 |