一碉熄、什么是異常(Exception):
1.生活中的異常:在現(xiàn)實生活中發(fā)生的意外情況.
2.程序中的異常:異常是指在程序的運行過程中所發(fā)生的不正常的事件碍侦,它會中斷正在運行的程序.
二畅铭、異常處理:
1.什么是異常處理:java編程語言使用異常處理機制為程序提供了錯誤處理的能力.
注意:不是解決錯誤
作用:增強程序健壯性肿男、穩(wěn)定性
2.java異常處理相關(guān)關(guān)鍵字:try钱雷、catch雷猪、finally、throw余佛、throws
3.使用try..catch..finally進(jìn)行異常處理
try{
試圖執(zhí)行的代碼塊
}catch(異常類型 e){
出錯時執(zhí)行代碼塊
}finally{
不管有錯沒錯都執(zhí)行
}
注意:a.finally塊可有可無
b.多重catch語句(exception只能出現(xiàn)在最后)
catch(InputMismatchException e){
e.printStackTrace();
}catch(ArithmeticException e){
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
4.在catch塊獲異常對象相關(guān)信息
4.1使用e.getMessage()獲取異常的錯誤描述信息
4.2輸出異常的堆棧信息
e.printStackTrace();
5.常的異常類型:
Exception 異常的根類
常用異常子類有:
ArithmeticException 零作為除數(shù)
ArrayIndexOutOfBoundsException 數(shù)組下標(biāo)越界
NullPointerException 嘗試訪問 null 對象成員
IllegalArgumentException 方法接收到非法參數(shù)
ClassCastException 對象強制類型轉(zhuǎn)換出錯
三柠新、使用throws關(guān)鍵聲明方法可能拋出的異常,交給調(diào)用者進(jìn)行處理.
public class MyMath {
//求商的方法
public void getRes() throws InputMismatchException,ArithmeticException,Exception{ //聲明方法可能拋出的異常
}
public static void main(String[] args) {
//創(chuàng)建對象
MyMath myMath=new MyMath();
try {
myMath.getRes();//調(diào)用者 處理異常
} catch (InputMismatchException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ArithmeticException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
四辉巡、使用throw關(guān)鍵字手動拋出異常對象
throw new Exception("錯誤的描述信息");
五恨憎、日志記錄工具:(log4j)
- 什么是日志
主要用來記錄系統(tǒng)運行中一些重要操作信息,便于監(jiān)視系統(tǒng)運行情況,幫助用戶提前發(fā)現(xiàn)和避開可能出現(xiàn)的問題红氯,或者出現(xiàn)問題后根據(jù)日志找到原因
2.使用log4j記錄日志步驟:
2.1導(dǎo)入log4j的jar包
在項目中新建lib文件夾框咙,將第三方的jar包復(fù)制到lib文件夾中.接著在lib文件夾中在包上右鍵-->build path-->add Bulid Path即可
2.2在src目錄添加日志的屬性文件(配置log4j如何工作):log4j.properties
2.3在類中記錄錯誤
3.1在類中創(chuàng)建log4j的記錄器對象
Logger logger=Logger.getLogger(Demo1.class);
3.2使用記錄器對象的相關(guān)方法記錄錯誤
logger.error("出錯啦咕痛!"+e.getMessage()); //非常嚴(yán)重
logger.debug("出錯啦!"+e.getMessage()); //一般異常信息
logger.warn("出錯啦喇嘱!"+e.getMessage()); //警告信息
logger.info("出錯啦茉贡!"+e.getMessage()); //提示信息