異常、Throwable、finally、File類(十九)

來源:互聯網
上載者:User

標籤:

1.異常的概述和分類

* A:異常的概述
  * 異常就是Java程式在運行過程中出現的錯誤。
* B:異常的分類
  * 通過API查看Throwable
    * Error
      * 伺服器宕機,資料庫崩潰等
    * Exception
C:異常的繼承體系
  * Throwable
    * Error
    * Exception
        * RuntimeException

2.JVM預設是如何處理異常的

* :JVM預設是如何處理異常的
    * main函數收到這個問題時,有兩種處理方式:
    * a:自己將該問題處理,然後繼續運行
    * b:自己沒有針對的處理方式,只有交給調用main的jvm來處理
    * jvm有一個預設的異常處理機制,就將該異常進行處理.
    * 並將該異常的名稱,異常的資訊.異常出現的位置列印在了控制台上,同時將程式停止運行

3.try...catch的方式處理異常

* A:異常處理的兩種方式
  * a:try…catch…finally
  * b:throws
* B:try...catch處理異常的基本格式
  * try…catch…finally

4.編譯期異常和運行期異常的區別

  * :編譯期異常和運行期異常的區別?
    * Java中的異常被分為兩大類:編譯時間異常和運行時異常。
    * 所有的RuntimeException類及其子類的執行個體被稱為運行時異常,其他的異常就是編譯時間異常。
      * 編譯時間異常
        * Java程式必須顯示處理,否則程式就會發生錯誤,無法通過編譯。
      * 運行時異常
        * 無需顯示處理,也可以和編譯時間異常一樣處理。

* 編譯期異常和運行期異常的區別    * 編譯時間異常     * 未雨綢繆     * 在準備要做某件事的時候,要提前想到可能會發生什麼事    * 運行時異常     * 編譯時間不會報錯,程式運行起來如果有錯誤就會報異常,運行時異常都是程式員犯的錯誤,需要回來修改代碼

5.Throwable的幾個常見方法

* :Throwable的幾個常見方法
  * a:getMessage()
  * 擷取異常資訊,返回字串。
  * b:toString()
  * 擷取異常類名和異常資訊,返回字串。
  * c:printStackTrace()
  * 擷取異常類名和異常資訊,以及異常出現在程式中的位置(行號)。傳回值void。

6.throws的方式處理異常

* :throws的方式處理異常
  * 定義功能方法時,需要把出現的問題暴露出來讓調用者去處理。
  * 那麼就通過throws在方法上標識。

7.throw的概述以及和throws的區別?

* A:throw的概述
  * 在功能方法內部出現某種情況,程式不能繼續運行,需要進行跳轉時,就用throw把異常對象拋出。

* B:throws和throw的區別
* a:throws
  * 用在方法聲明後面,跟的是異常類名
  * 可以跟多個異常類名,用逗號隔開
  * 表示拋出異常,由該方法的調用者來處理
* b:throw
  * 用在方法體內,跟的是異常對象名
  * 只能拋出一個異常對象名
  * 表示拋出異常,由方法體內的語句處理

8.finally關鍵字的特點及作用

* A:finally的特點
  * 被finally控制的語句體一定會執行。
  * 特殊情況:在執行到finally之前jvm退出了(比如System.exit(0))。
* B:finally的作用
  * 用於釋放資源,在IO流操作和資料庫操作中會見到。

finally關鍵字的面試題?* final,finally和finalize的區別?    * final        * 修飾類的不能被繼承,修飾的方法不能被重寫,修飾變數不能被改變值,修飾基本類型的變數為常量,修飾引用資料變數不改變其地址值。      * finally        * 釋放資源。     * finalize()         * 是一個方法,在記憶體回收的時候調用。
* 如果catch裡面有return語句,請問finally的代碼還會執行嗎?如果會,請問是在return前還是return後。    * 會, return 前執行。

9.自訂異常概述和基本使用

* A:為什麼需要自訂異常
  * 舉例:人的年齡
* B:自訂異常概述
  * 繼承自Exception
  * 繼承自RuntimeException

10.異常的注意事項及如何使用異常處理

* A:異常注意事項
  * a:子類重寫父類方法時,子類的方法必須拋出相同的異常或父類異常的子類。(父親壞了,兒子不能比父親更壞)
  * b:如果父類拋出了多個異常,子類重寫父類時,只能拋出相同的異常或者是他的子集,子類不能拋出父類沒有的異常
  * c:如果被重寫的方法沒有異常拋出,那麼子類的方法絕對不可以拋出異常,如果子類方法內有異常發生,那麼子類只能try,不能throws
* B:如何使用異常處理
  * 原則:如果該功能內部可以將問題處理,用try,如果處理不了,交由調用者處理,這是用throws
  * 區別:
    * 後續程式需要繼續運行就try
  * 後續程式不需要繼續運行就throws。
  * 如果JDK沒有提供對應的異常,需要自訂異常。

11.File類的概述和構造方法

* A:File類的概述
  * 檔案和目錄路徑名的抽象表示形式。
  * File更應該叫做一個路徑
  * 檔案路徑或者檔案夾路徑
  * 路徑分為絕對路徑和相對路徑
  * 絕對路徑是一個固定的路徑,從盤符開始
  * 相對路徑相對於某個位置,在eclipse下是指當前項目下,在dos下指的是當前路徑
  * 查看API
  * 檔案和目錄路徑名的抽象表示形式
* B:構造方法
  * File(String pathname):根據一個路徑得到File對象
  * File(String parent, String child):根據一個目錄和一個子檔案/目錄得到File對象
  * File(File parent, String child):根據一個父File對象和一個子檔案/目錄得到File對象。

File類的構造方法        /*1.根據一個路徑得到File對象         * File file = new File("F:\\JAVA基礎班\\基礎班視頻與代碼\\day18java基礎班\\video");//路徑用的是\\斜線,單個的/也可以。          boolean b = file.exists();//File 類中的exists()是判斷這個檔案是否存在。          System.out.println(b);//true 存在         */            /*2.根據一個目錄和一個子檔案/目錄得到File對象         * String parent = "F:\\JAVA基礎班\\基礎班視頻與代碼";          String child = "day18java基礎班\\video";          File file = new File(parent,child );          System.out.println(file.exists());          */        /*3.:根據一個父File對象和一個子檔案/目錄得到File對象         * File parent = new File("F:\\JAVA基礎班\\基礎班視頻與代碼");           String child = "day18java基礎班\\video";           File file = new File(parent,child);           System.out.println(file.exists());        */

12.File類的建立功能

* :建立功能
  * public boolean createNewFile():建立檔案 如果存在這樣的檔案,就不建立了
  * public boolean mkdir():建立檔案夾 如果存在這樣的檔案夾,就不建立了
  * public boolean mkdirs():建立檔案夾,如果父資料夾不存在,會幫你建立出來

File類的建立功能        /*1.建立檔案 如果存在這樣的檔案,就不建立了         * File file = new File("MyWorld");           boolean b = file.createNewFile();//建立檔案,在當前的項目下           System.out.println(b);        */        /*2.建立檔案夾 如果存在這樣的檔案夾,就不建立了         * File file = new File("MyGirl");//建立檔案夾          System.out.println(file.mkdir());        */        /*3.建立檔案夾,如果父資料夾不存在,會幫你建立出來         * File file = new File("World\\Girl");          System.out.println(file.mkdirs());//建立多級檔案夾         */    * 注意事項:        * 如果你建立檔案或者檔案夾忘了寫盤符路徑,那麼,預設在項目路徑下。

13.File類的刪除功能

* A:刪除功能
  * public boolean delete():刪除檔案或者檔案夾
* B:案例示範
  * File類的刪除功能
  * 往下看。
  * 注意事項:
  * Java中的刪除不走資源回收筒。
  * 要刪除一個檔案夾,請注意該檔案夾內不能包含檔案或者檔案夾。

13.File類的重新命名功能

* :重新命名功能
  * public boolean renameTo(File dest):把檔案重新命名為指定的檔案路徑。

File類的重新命名功能        /*1.刪除檔案或者檔案夾,刪除檔案夾時,必須是空的檔案夾,刪除後不經過資源回收筒         * File file = new File("xxx.txt");           System.out.println(file.delete());        */        /*2.把檔案重新命名為指定的檔案路徑         * 1)如果路徑名相同,就是改名         * File file = new File("xxx.txt");           File file0 = new File("zzz");            System.out.println(file.renameTo(file0));         * 2)如果路徑名不同就是剪下並改名           File file = new File("F:\\JAVA基礎班\\基礎班視頻與代碼\\day18java基礎班\\aaa");           File file0 = new File("zzz");           System.out.println(file0.renameTo(file));        */        * 注意事項:        * 如果路徑名相同,就是改名。        * 如果路徑名不同,就是改名並剪下。

14.File類的判斷功能

* :判斷功能
  * public boolean isDirectory():判斷是否是目錄
  * public boolean isFile():判斷是否是檔案
  * public boolean exists():判斷是否存在
  * public boolean canRead():判斷是否可讀
  * public boolean canWrite():判斷是否可寫
  * public boolean isHidden():判斷是否隱藏

File類的判斷功能        File file = new File("MyWorld");        File file0 = new File("World");        File file1 = new File("F:\\JAVA基礎班\\基礎班視頻與代碼");        System.out.println(file.isDirectory());//false        System.out.println(file0.isDirectory());//true        System.out.println(file.isFile());//true        System.out.println(file0.isFile());//false        System.out.println(file.exists());//true                File file2 = new File("MyWord");        file2.setReadable(false);        System.out.println(file2.canRead());//true,windows 系統下所有的檔案都是可讀的。                File file3 = new File("MyWorld");        file3.setWritable(false);        System.out.println(file3.canWrite());//false,windows系統下,可以設定為不可寫                File file4 = new File("F:\\JAVA基礎班\\基礎班視頻與代碼\\ddd.txt");        System.out.println(file4.isHidden());//true判斷是否是隱藏的

15.File類的擷取功能

* :擷取功能
  * public String getAbsolutePath():擷取絕對路徑
  * public String getPath():擷取相對路徑
  * public String getName():擷取名稱
  * public long length():擷取長度。位元組數
  * public long lastModified():擷取最後一次的修改時間,毫秒值
  * public String[] list():擷取指定目錄下的所有檔案或者檔案夾的名稱數組
  * public File[] listFiles():擷取指定目錄下的所有檔案或者檔案夾的File數組

File類的擷取功能        File file = new File("World");        //F:\eclipseTest\day19_0\World,擷取絕對路徑,        System.out.println(file.getAbsoluteFile());        //World,擷取相對路徑        System.out.println(file.getPath());        //World,擷取名稱        System.out.println(file.getName());        //0,擷取長度,檔案夾的長度為0;檔案的長度,就等於它所佔的位元組碼        System.out.println(file.length());        File file1 = new File("mygirl.txt");        System.out.println(file1.length());        //lastModified()擷取最後一次的修改時間,為1970到現在的毫秒值        System.out.println(file1.lastModified());        long time = file1.lastModified();        Date d = new Date(time);//把毫秒值轉換成當前日期(最後修改時的日期)        System.out.println(d);        //public String[] list():擷取指定目錄下的所有檔案或者檔案夾的名稱數組        //它輸出的只是名字。        File file2 = new File("F:\\JAVA基礎班\\基礎班視頻與代碼");        String[] s = file2.list();        for (String str : s) {            System.out.println(str);        }        //public File[] listFiles():擷取指定目錄下的所有檔案或者檔案夾的File數組        //它把路徑也一起輸出。        File file3 = new File("F:\\JAVA基礎班\\基礎班視頻與代碼");        File[] f = file3.listFiles();        for (File file4 : f) {            System.out.println(file4);        }

16.檔案名稱過濾器的概述及使用

* A:檔案名稱過濾器的概述
  * public String[] list(FilenameFilter filter)
  * public File[] listFiles(FilenameFilter filter)
* B:檔案名稱過濾器的使用
  * 需求:判斷E盤目錄下是否有尾碼名為.jpg的檔案,如果有,就輸出該檔案名稱
* C:源碼分析
  * 帶檔案名稱過濾器的list()方法的源碼。

17.File類(遞迴)

* 1.弊端:容易棧記憶體溢出* 2.好處:不用知道調用的次數* 3.建構函式不能被遞迴* 4.傳回值,可以有,也可以沒有。        5的階乘        public static void main(String[] args){            System.out.println(fun(5));        }        public static int fun(int num){            if(num == 1){                return 1;            }else {                renturn num * fun(num - 1);            }        }

 

異常、Throwable、finally、File類(十九)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.