初始Java22(异常处理2)

学习内容:

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导入.

明天要学习的内容:

文件操作、目录管理

 

posted @ 2020-07-27 14:35  第厘  阅读(115)  评论(0编辑  收藏  举报