java語法之 try(){}


我們通常在讀寫文件的時候需要捕獲異常並關閉流,如下所示:

public static void test1() {
        Student[] students = new Student[3];
        students[0] = new Student("小麗", 2, 17);
        students[1] = new Student("小明", 1, 19);
        students[2] = new Student("小芳", 2, 18);
        PrintWriter out = null;
        try {
            out = new PrintWriter("D:/test/ddd.txt","UTF-8");
            writeData(students, out);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(out != null) {
                out.close();
            }
        }
    }

如上面的情況,在業務都做完了,最后需要關閉流的時候還要判斷一下,是否正常結束之后才能手動關閉。而有時如果忘記關閉那么在流中的數據在有緩存的情況下將不會被刷新到終端。這樣我們取到的數據將會不全,並且程序在一次次的啟動中都沒有將流關閉,那么會內存溢出。所有手動關閉即麻煩也“危險”,在java1.7后出了新的的表達式來解決這個問題,如下所示:

public static void test2() {
        Student[] students = new Student[3];
        students[0] = new Student("小麗", 2, 17);
        students[1] = new Student("小明", 1, 19);
        students[2] = new Student("小芳", 2, 18);
        try(PrintWriter out = new PrintWriter("D:/test/ddd2.txt","UTF-8");
            Scanner in = new Scanner(new FileInputStream("D:/test/ddd2.txt"), "UTF-8")){
            writeData(students, out);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

功能和上面的一樣,只不過是將語法從:try{}catch{}finaliy{} 變成了 try(){}catch{},凡是在try的括號中聲明的類都必須實現java.io.Closeable接口,這樣try就會自動將聲明的流在使用完畢后自動關閉。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM