目錄
異常
作用
異常的處理方式
JVM(虛擬機)默認的處理方式
自己處理(捕獲異常)
拋出異常(也就是交給調用者處理)
自定義異常
file
File中常見成員方法
判斷和獲取
創建和刪除?
?獲取并遍歷
?
異常
異常就是代表程序出現的問題。
異常在java.lang.Throwable這個包里,包含Error異常和Exception異常。
Error:代表的系統級別錯誤(屬于嚴重問題)
系統一旦出現問題,sun公司會把這些錯誤封裝成Error對象。
Error是給sun公司自己用的,不是給我們程序員用的。
因此我們開發人員不用管它。
Exception:叫做異常,代表程序可能出現的問題。
我們通常會用Exception以及他的子類來封裝程序出現的問題。
運行時異常:RuntimeException及其子類,編譯階段不會出現異常提醒。
運行時出現的異常(如:數組索引越界異常)
其他異常(也就是編譯時異常):編譯階段就會出現異常提醒的。(如:日期解析異常)沒有繼承RuntimeExcpetion的異常,直接繼承于Excpetion。編譯階段如果編譯錯誤就會有錯誤提示
異常體系的最上層父類是Exception,并且異常分為兩類:編譯時異常、運行時異常
作用
1、是用來查詢bug的關鍵參考信息。
2、可以作為方法內部的一種特殊返回值,以便通知調用者底層的執行情況。如下:
之前寫法:
現在:
?
age賦值-2,運行main方法,控制臺輸出 :
異常的處理方式
JVM(虛擬機)默認的處理方式
把異常的名稱,異常原因以及異常出現的位置等信息輸出在了控制臺。
程序停止執行,下面的代碼不會再執行了。
自己處理(捕獲異常)
主要目的:當代碼出現異常時,可以讓代碼繼續往下執行。
格式:
try{可能出現異常的代碼;}catch(異常類名? 變量名){異常處理的代碼;}
如果try中沒有遇到問題,把try里面所有的代碼執行完,并且往后執行,但是不會執行catch里面的代碼。
如果try中可能會遇到多個問題,在try里面,執行遇到的第一個問題就會創建它對應的異常對象,try后面的代碼就不會執行了,直接把這個創建的異常對象與catch里面作比較。
如果try中可能會遇到多個問題,我們也會寫多個catch與之對應,如果這些異常存在父子關系,那么父類一定要寫在下面。(比如Exception與ArithmeticException就是父類子類的關系)
控制臺輸出:
如果try中遇到的問題沒有被捕獲,相當于try...catch代碼沒有任何作用和沒寫一樣,就是把當前創建的異常對象交給虛擬機默認處理(異常處理方式的第一種方式)。
異常的常用方法:
對于以上catch中的異常處理我只寫了一個輸出語句,但是這樣是不規范的。
Throwable的成員方法:
public String getMessage():返回此 throwable 的詳細消息字符串(異常簡短信息)
public String toString():返回此可拋出的簡短描述(異常簡短信息以及異常名字)public void printStackTrace():把異常的錯誤信息輸出在控制臺(異常簡短信息以及異常名字以及異常出現的位置)(最常用)
ctrl+Alt+t快捷鍵idea自動生成。
拋出異常(也就是交給調用者處理)
主要目的:告訴調用者出錯了
throws:寫在方法定義處,表示聲明一個異常,告訴調用者,使用本方法可能會有哪些異常。(如果是編譯時的異常那么必須要寫,如果是運行時異常那么可以不寫)
throw:寫在方法內,表示結束方法;手動拋出異常對象,把異常對象交給調用者,方法中下面的代碼不再執行了。
自定義異常
主要目的:為了讓控制臺的報錯信息更加見名知意。
1、定義異常類
2、寫繼承關系(如果定義的是運行時的異常繼承RuntimeException,但是如果是編譯時的異常直接繼承Exception)
3、空參構造和帶參構造
Alt+insert在idea自動生成
file
文件保存的位置:路徑(file)
file對象就表示一個路徑,可以是文件的路徑、也可以是文件夾的路徑。
這個路徑可以是存在的,也允許是不存在的。
public File(String pathname):根據文件路徑創建文件對象
public File(String parent, String child):根據父路徑名字符串和子路徑名字符串創建文件對象
public File(File parent, String child):根據父路徑對應文件對象和子路徑名字符串創建文件對象
?
相對路徑:不帶盤符,默認到當前項目下去找。是相對當前項目下的路徑
絕對路徑:帶盤符
File中常見成員方法
判斷和獲取
public boolean isDirectory():判斷此路徑名表示的File是否為文件夾
public boolean isFile():判斷此路徑名表示的File是否為文件
public boolean exists):判斷此路徑名表示的File是否存在
public long length():返回文件的大小(字節數量,只能獲取文件的大小)
public String getAbsolutePath():返回文件的絕對路徑
public String getPath():返回定義文件時使用的路徑
public String getName():返回文件的名稱,帶后綴(如果調用者是文件夾,那么返回的就是文件夾的名字)
public long lastModified():返回文件的最后修改時間(時間毫秒值)
這里說一個idea的快捷鍵:如果在idea要改變一個變量的名稱,并且用這個變量的所有變量,都要改為改變之后的變量名那么就用shift+F6來改變。
在這個文件的屬性我們可以看見大小為21個字節,1字節=8bit,而這個文件的內容是:我們都應該堅持,說明一個漢字占三個字節24個比特位。?
?
創建和刪除?
public boolean createNewFile():創建一個新的空的文件(創建的一定是個文件,如果沒有后綴,那么創建的文件也沒有后綴,反正不可能創建文件夾)
public boolean mkdir():創建單級文件夾
public boolean mkdirs():創建多級文件夾,同時也能創建單級文件夾,所以mkdir方法不常用
public boolean delete():刪除文件、空文件夾(刪除不會經過回收站,直接刪)
?獲取并遍歷
public File[] listFiles():獲取當前該路徑下所有內容。
當調用者File表示的路徑不存在時,返回null
當調用者File表示的路徑是文件時,返回null
當調用者File表示的路徑是一個空文件夾時,返回一個長度為0的數組
當調用者File表示的路徑是一個有內容的文件夾時,將里面所有文件和文件夾的路徑放在File數組中返回
當調用者File表示的路徑是一個有隱藏文件的文件夾時,將里面所有文件和文件夾的路徑放在File數組中返回,包含隱藏文件
當調用者File表示的路徑是需要權限才能訪問的文件夾時,返回null