錯(cuò)誤類型
- 編譯異常兔仰,檢查性異常Exception:
在編寫代碼時(shí),eclipse會(huì)自動(dòng)檢查異常破停,包括文件操作翅楼,控制輸入等,提示解決異常真慢。 - 運(yùn)行時(shí)異常RuntimeException:
代碼問題毅臊,在運(yùn)行時(shí)檢查出的異常,包括數(shù)組越界黑界,算數(shù)除零等問題管嬉。 - 錯(cuò)誤Error:
運(yùn)行環(huán)境問題,非代碼問題朗鸠。
詳細(xì)圖示:
異常圖示
處理方式
- 在發(fā)生異常的地方直接處理蚯撩。
- try catch finally語句
代碼:
class Son{
public void calculate(){
FileReader fr=null;
try {
//直接捕獲可能出現(xiàn)錯(cuò)誤的代碼段,這里放置可能出錯(cuò)的代碼
fr=new FileReader("D:\\1.txt");
//該句是讀取目錄資源烛占,可能存在文件不存在胎挎,損壞等錯(cuò)誤;
int a=6/0;
//算數(shù)除零錯(cuò)誤
System.out.println(a);
} catch (Exception e) {
// 打印出錯(cuò)誤信息忆家,這里獲取可能出現(xiàn)的異常呀癣,Exception為異常父類,能接受子類異常
e.printStackTrace();
//該語句返回異常類型弦赖,錯(cuò)誤行數(shù)
}finally{
//不管是否存在異常项栏,finally里的語句均被執(zhí)行
//finally存在的意義是關(guān)閉異常語句塊中的值,例如fr=new FileReader("D:\\1.txt");未出錯(cuò)蹬竖,而后者出錯(cuò)沼沈,使得前者資源打開未關(guān)閉
try {
fr.close();
//該句關(guān)閉資源,保證出錯(cuò)時(shí)也能關(guān)閉
} catch (IOException e) {
e.printStackTrace();
}
}
//使用try catch語句不會(huì)中斷程序進(jìn)程币厕,之后語句會(huì)被打印
System.out.println("異常出現(xiàn)后會(huì)執(zhí)行嗎列另?");
}
}
- 將異常拋出,交由調(diào)用者處理旦装。
代碼:
class Parent{
public void calculate(){
Son son=new Son();
try {
son.calculate();
//調(diào)用Son中可能出現(xiàn)問題的代碼時(shí)页衙,做出相應(yīng)處理
//當(dāng)然,他也可以將錯(cuò)誤拋出,最終交由JVM處理店乐,會(huì)出錯(cuò)
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Son {
public void calculate() throws Exception{
//拋出異常
int a=6/0;
//算數(shù)除零錯(cuò)誤
System.out.println("異常出現(xiàn)后會(huì)執(zhí)行嗎艰躺?");
//使用try catch語句不會(huì)中斷程序進(jìn)程,之后語句會(huì)被打印
}
}