学习内容:
1、在Java中如何进行异常处理
(2)使用throws抛出异常
声明抛弃异常是在一个方法声明中的throws字句中指明的
[ 修饰符 ] 返回类型 方法名(参数1,参数2,...) throws 异常列表 { }
throws 子句中同时可以指明多个异常,说明该方法将不对这些异常进行处理,而是声明抛弃他们
(3)通过throw抛出异常
手动抛弃异常对象是通过throw语句实现的,但可以抛弃的异常必须是Throwable 或其子类的实例
形式: throw 异常名
throw关键字主要用在try块中,用来说明已经发生的异常情况;throw关键字后面跟随一个异常对象,用来说明发出的异常类型
注意:如果方法中用throw语句抛出了异常,那么在方法的头部必须用throws声明将要抛出的异常
(4)自定义异常
若要建立自己的异常类型,只要定义Exception的一个子类就可以了,子类不需要实际执行什么,它们在类型系统中的存在允许把它们当成异常使用
例:自定义异常
package day01; public class ZiDingYi { public static void main(String[] args) { ZiDingYi z= new ZiDingYi(); try{ z.add(2,3); }catch(MyException e) { e.printStackTrace(); } } private void add(int a,int b) throws MyException{ if(a==b) { throw new MyException("输入两个数相等"); } } } class MyException extends Exception{ public MyException(String mag) { super(mag); } public MyException() { super(); } public MyException(String message,Throwable cause) { super(message,cause); } public MyException(Throwable cause) { super(cause); } }
警告: serializable 类 MyException 未声明类型为 long 的静态终态
2、用log4j记录异常日志信息
log4j是Apache的一个开放源代码项目,它是一个日志操作包,通过使用log4j可以指定日志信息输出的目的地、控制每一条日志的输出格式,定义日志信息的级别,所有这些功能通过一个配置文件灵活进行配置
在程序中日志通常记录程序的运行情况,如错误信息、系统管理员的登陆情况等
log4j组成:
log4j主要由三大组件组成。
Logger: 决定什么日志信息应该被输出、什么日志信息应该被忽略。
Appender: 指定日志信息应该输出到什么地方,这些地方可以是控制台、文件和网络设备.
Layout: 指定日志信息的输出格式。
一个Logger可以有多个Appender,也就是说,日志信息可以同时输出到多个设备上,每个Appender对应一种Layout,流程关系如图8-3所示。
(1)Logger组件
(a)Logger组件提供的方法
Logger组件是log4j的核心组件,它代表了log4j 的日志记录器,它能够对日志信息进行分类筛选。它由org.apache.log4j.Logger类实现,Logger 类源代码如下。
public class Logger {
// Creation & retrieval methods:
public static Logger getRootLogger() :
public static Logger getLogger (String name) ;
// printing methods:
public void debug (Object message) ;
public void info (0bject message) ;
public void warn (Object message);
public void error (object message) :
public void fatal (object message) ;
// generic printing method:
public void log(Priority P,object message) ;
(b)在配置文件中配置Logger组件
可在log4j配置文件中配置自己的Logger组件,配置如下。
log4j.logger.myLogger=WARN
以上代码定义了一个Logger组件,名称为myLogger,日志级别为WARN.
(c)日志级别种类
日志的种类一共有五种,级别由高到低依次是fatal、error、 warm、 info. debug. 获得Logger实例后,用户可调用以下方法之-输出日志信息。
以上方法只有当它的级别大于或等于Logger组件配置的日志级别时才被调用。以前面大家配置的myLogger为例,它的日志级别为WARN,那么在程序中,它的warn(). error()、fatal()方法会被执行。对于log()方法,只有当它的参数Priority指定的日志级别大于或等于WARN时,它才会被执行。
(2)Appender组件
Appender组件决定将日志信息输出到什么地方。支持以下目的地。
#控制台(Console)。
#文件(File).
#GUI组件(GUI component).
#套接口服务器(Remote socket server).
#NT的事件记录器(NT Event Logger).
#UNIX Syslog守护进程(Remote UNIX Syslog daemon).
一个Logger可同时对应多个Appender.
下面的myLogger配置两个Appender:一个是file,另一个是console.
log4j. logger.myAppender=WARN, file, console
log4j. appender.file=org. apache.log4j. RollingFileAppender
log4j. appender.file.File=log.txt
log4j.apender.console=org. apache .1og4j.ConsoleAppender
(3). Layout组件
Layout组件决定日志输出格式,有以下几种类型。
a. org.apache.log4j.HTMLLayout(以 HTML表格形式布局)。
b.org.apache.log4j.PattermLayout(可 以灵活地指定布局模式)。
c.org.apache.log4j.SimpleLayout(包含 日志信息的级别和信息字符串)。
d. org.apache.log4j.TTCCLayout(包含 日志产生的时间、线程和类别等信息)。
(4)log4j的基本用法
导入log4j的jar包
导入log4j的方式有两种:第-种直接使用命令行导入;第二种使用MyEclipse导入。.
#命令行导入log4j.
#使用MyEclipse导入.
明天要学习的内容:
文件操作、目录管理