java中带参数的try(){}语法含义是什么?
Java 7簡化資源清理(try-with-resources)自動(dòng)關(guān)閉資源的try語句
?
自動(dòng)關(guān)閉資源格式:
try( )//此處多了圓括號(hào),()圓括號(hào)內(nèi)寫打開資源的代碼,在這里創(chuàng)建的對(duì)象必須實(shí)現(xiàn)Autocloseable接口
{
IO操作
}
catch(){
處理異常的代碼
}
?
?
帶資源的try語句(try-with-resource)的最簡形式為:
?try(Resource res = xxx)//可指定多個(gè)資源
{
work with res
}
try塊退出時(shí),會(huì)自動(dòng)調(diào)用res.close()方法,關(guān)閉資源。
?
PS:在coreJava第9版的第一卷的486頁有解釋。
作者:今天
鏈接:https://www.zhihu.com/question/41523613/answer/206317795
來源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
?
?
?
?
作者:斯巴拉西
鏈接:https://www.zhihu.com/question/41523613/answer/91339059
來源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
?
挺好用的語法,不用寫一大堆finally來關(guān)閉資源,所有實(shí)現(xiàn)Closeable的類聲明都可以寫在里面,最常見于流操作,socket操作,新版的httpclient也可以;
需要注意的是,try()的括號(hào)中可以寫多行聲明,每個(gè)聲明的變量類型都必須是Closeable的子類,用分號(hào)隔開.樓上說不能關(guān)兩個(gè)流的落伍了
===
補(bǔ)充一下,在沒有這個(gè)語法之前,流操作一般是這樣寫的:
InputStream is = null;
OutputStream os = null;
try {
//...
} catch (IOException e) {
//...
}finally{
try {
if(os!=null){
os.close();
}
if(is!=null){
is.close();
}
} catch (IOException e2) {
//...
}
}
而現(xiàn)在你可以這樣寫:
?try(
InputStream is = new FileInputStream("...");
OutputStream os = new FileOutputStream("...");
){
//...
}catch (IOException e) {
//...
}
生活一下就美好了
總結(jié)
以上是生活随笔為你收集整理的java中带参数的try(){}语法含义是什么?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何用应用程序模拟键盘和鼠标按键
- 下一篇: C++下ctrl+z退出cin输入循环