標籤:
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類(十九)