处理则不执行,因为Exception是异常超类
4.ae.getMessage()即是得到异常原因
5.一定要导入异常处理包:import java.util.InputMismatchException;
1.1相关英文详解
log:日志 debug:调试 error:错误 warn:警告, 提醒 info:消息
1.2 什么是log4j?为什么要有log4j?
log4j定义:log4j是一个流行、优秀的日志记录工具,它能够以各种灵活的方法输出日志信息;
为什么要用log4j:在程序发生错误时,我们希望可以以文件的形式保存这此异常信息,以便日后查看处理优化程序,
就可以用到日志记录,现流行最优秀的一款:log4j,它是开源的,且方便易用;
1.3如何使用log4j记录程序发后的异常日志信息?
(1). 下载log4j的jar包. log4j-1.2.15.jar
(2). 请将jar包粘贴到工程中.
(3). 导入jar包:工程名,右键--properties--java build path--libraries--add jars……
第二步可以不执行,在第三步中工程名,右键--properties--java build path--libraries--add External jars……即可
区别:add jars……是添加工程内jar包,add External jars……则不限制于包内,用于jar包未放置于工程内;
建议执行第二步,实现工程、jar包一体化,避免出现未知的异常
(4). 新建一个log4j.properties:src--右键--new--file--命名log4j.properties
(5). 配置log4j.properties:
### 设置优先级别、以及输出源 stdout输出到控制台,file保存到文件###
log4j.rootLogger=debug, stdout, file
#
## 把日志信息输出到控制台 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %m%n
### 把日志信息输出到文件:accp.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=accp.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %m%n
(6).详解配置:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender:添加到控制台
log4j.appender.stdout.Target=System.out:方式为输出
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout:信息布局方式为自定义
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %m%n
布局方式:布局方式:yyyy-年mm-月dd-天hh-小时mm-分钟ss-秒钟 %l:具体异常代码行数%m:异常信息%n:信息换行
(7)优先级:
优先级从高到低分别是ERROR、WARN、INFO、DEBUG
(8).总结:
a:配置文件中不能包含中文(注释中文也不可),因为配置文件保存标准为:"ISO-8859-1";
b:log4j.rootLogger=debug, stdout, file中的debug可替换为ERROR、WARN、INFO、DEBUG
c:根据需求设置级别,如设置为debug,则会忽略比它级别低的所有异常
d:log4j.rootLogger=debug, stdout, file中的stdout, file可选其一
1.4实例说明:
需求:需求:计算类(compute)要求用户输入二个数执行相除并保存结果用异常类进行处理和使用log4j记录异常信息
代码实现:
package com.t97pute;
import java.util.InputMismatchException;
import java.util.Scanner;
import org.apache.log4j.Logger;//导入log4j包
public class Compute {
// 声明数组
private int[] num = new int[2];
// 封装属性
public int[] getNum() {
return num;
}
public void setNum(int[] num) {
this.num = num;
}
/**
* 实现计算
*
* @param args
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Compute compute = new Compute();
Logger log = Logger.getLogger(Co