麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Java7,AutoClosable

2019-11-14 22:58:33
字體:
供稿:網(wǎng)友
java7,AutoClosable

Java 7的try-with-resource語法的目的是提高Java開發(fā)人員的效率,使得他們不需要在編寫代碼時(shí)考慮資源釋放問題,大多數(shù)的這類"清理"問題是由于異常發(fā)生時(shí)清理方法沒有被調(diào)用產(chǎn)生。

準(zhǔn)備
  • 3個(gè)異常:
class OpenException extends Exception{} class SwingException extends Exception{} class CloseException extends Exception{}
  • OpenDoor類

構(gòu)造函數(shù)會(huì)拋出OpenException,swing()方法會(huì)拋出SwingException,close方法會(huì)拋出CloseException。

class OpenDoor implements AutoCloseable { public OpenDoor() throws Exception { System.out. }}
  • 可執(zhí)行的TryWithResources類
public class TryWithResources { public static void main(String[] args) throws Exception { try ( OpenDoor door = new OpenDoor() ) { door.swing(); } catch (Exception e) { System.out.println("Is there a draft? " + e.getClass());//注意e.getClass() } finally { System.out.println("I'm putting a sweater on, regardless. "
);    }  }}

運(yùn)行上面的代碼,如果沒有拋出異常的話,輸出應(yīng)該是這樣的:

The door is open. The door is becoming unhinged. The door is closed. I'm putting a sweater on, regardless.

三個(gè)異常目前被注釋掉了,現(xiàn)在讓我們一個(gè)個(gè)的拋出他們。

開始
  • 在'try-with-resource'初始化代碼塊的異常(構(gòu)造函數(shù)拋出)

如果OpenDoor的構(gòu)造函數(shù)拋出異常時(shí)會(huì)發(fā)生什么?close()方法是否還會(huì)被自動(dòng)調(diào)用?讓我們來試一下就知道了,去掉構(gòu)造函數(shù)中異常代碼的注釋:

public OpenDoor() throws Exception { System.out.println("The door is open."); throw new
 OpenException();}

代碼打印的結(jié)果如下:

The door is open. Is there a draft? class OpenException I'm putting a sweater on, regardless.

可以看到,當(dāng)構(gòu)造函數(shù)拋出異常時(shí)try-with-resource代碼體部分的代碼沒有被執(zhí)行。當(dāng)聲明資源時(shí),如果有異常拋出,可以認(rèn)為資源并未正確初始化,所以并需要釋放資源。然而,需要注意的時(shí),如果其他資源已被正確初始化,那么還是會(huì)按照聲明相反的順序調(diào)用那些資源的close()方法。

  • try-with-resource代碼塊中拋出的異常

如果在swing方法中拋出異常,會(huì)發(fā)生什么呢?

The door is open. The door is becoming unhinged. The door is closed. Is there a draft? class SwingException I'm putting a sweater on, regardless.

從上面的輸出我們可以了解到:

  1. OpenDoor的構(gòu)造方法被調(diào)用了,第一行輸出
  2. OpenDoor的swing方法也被調(diào)用了,第二行輸出
  3. 拋出了SwingException
  4. close方法被調(diào)用,第四行輸出
  5. 異常被catch塊捕獲,第五行輸出
  6. 執(zhí)行finally代碼塊,地六行輸出。

只是try-with-resources代碼塊的標(biāo)準(zhǔn)行為,盡管會(huì)使人很困惑:什么時(shí)候會(huì)執(zhí)行close方法?規(guī)則是:任何AutoCloseable對象的close方法會(huì)在任何catch塊代碼之前被執(zhí)行。

  • 在AutoCloseable對象的close方法中拋出異常
The door is open.The door is becoming unhinged.The door is closed.Is there a draft? class CloseExceptionI'm putting a sweater on, regardless.
我是天王蓋地虎的分割線

參考:http://www.4byte.cn/learning/84919/java-7-xin-te-xing-zi-dong-zi-yuan-guan-li-arm-he-autoclosable-jie-kou-jiao-cheng.html


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 在线观看国产一区二区 | 成人午夜影院 | 一本到免费视频 | 欧美成人一区二区三区 | 亚洲午夜在线 | 热re91久久精品国产99热 | 色妹子久久 | 亚洲国产资源 | 一级做a爱片性色毛片 | 国产精品视频成人 | 国产精品麻豆一区二区三区 | 欧美视频一区二区三区四区 | 亚洲一级片免费观看 | 日本特级a一片免费观看 | 久久99在线 | 欧洲伊人网 | 国产做爰全免费的视频黑人 | 国产日本在线 | 色淫影院| 最新av在线免费观看 | 中文字幕在线播放视频 | 欧美色视频免费 | 欧美a级大胆视频 | 99精品视频在线导航 | 亚洲精品有限 | 精品国产一区二区三区在线观看 | 久久久久九九九女人毛片 | 成人免费毛片一 | 国产精品爆操 | 国产成人综合在线视频 | 康妮卡特欧美精品一区 | 欧美福利视频一区二区 | 国产污污视频 | 成人免费av在线 | 国产毛片aaa一区二区三区视频 | 毛片免费视频观看 | 精品一区二区在线视频 | 国产精品久久久久久久模特 | 免费看真人a一级毛片 | 曰韩在线视频 | 国产羞羞视频在线观看 |