Java异常

时间:2022-12-24 13:57:33
什么是异常?

指程序在运行过程中发生的不正常事件,他会中断程序运行

打印错误信息语句:

System.err.println("");

系统强制退出:

System.exit(1);

异常的关键字:

try 执行可能产生异常的代码

catch 捕获异常

finally 无论是否出现异常,都会执行代码

throw 抛出异常

throws 声明可能抛出的异常

处理异常的步骤:

1、在可能发生异常的地方进行设置try

2、出现异常需要用catch进行捕获处理

3、finally一定会执行,可写可不写

异常产生的过程:

1、程序出现错误会自动生成一个异常对象

2、使用try-catch捕获时自动匹配出现的异常类型

3、根据不同的异常类型进入相应的代码块

语法:try{

//可能产生异常代码

}eatch(异常类型 异常对象){

//处理异常的代码块

}

Exception:所有的异常类型,所有异常的父类

使用try-catch:捕获异常的几种情况:

1、正常执行

在try里面的代码执行完毕后,不执行catch

2、异常情况

在try里面出现错误,直接进入catch代码块处理,处理后继续执行

3、异常类型不匹配

在try里面出现的错误,直接匹配catch直接匹配代码块类型,如果类型未匹配,程序中断

异常报错类型:

Exception 异常层次结构的父类

ArithmeticException 算数错误情形,如以零件除数

ArraylndexOutOfBoundsException 数组下标越界

NullPointerException 尝试访问null大小成员

ClassNotFoundException 不能加载所需要的类

IllegalArgumentException 方法接收到非法参数

ClassCastException 对象强制类型转换出错

NumberFormatException 数字格式转换异常,如果把“abc”转换为数字

try-catch-finally:

语法:try{}catch{}finally{ //无论是否异常,都执行}

不执行的唯一情况:

使用System.exit(1);//程序中断,退出Java虚拟机

在try-catch中return代码中:

1、finally始终会执行

2、先执行catch块,在执行finally块,但是return后面的代码不会执行

3、未出现异常,会执行finally,但是return后面的代码不会执行
4、先执行finally,在执行return

多重catch块的作用:

1、先添加子类异常,在添加父类异常

2、只会匹配一个异常类型,匹配到不在执行其他的catch

3、按顺序进行匹配,从上到下

e.printStackTrace();打印堆栈信息 确定那一行出现错误

在方法中处理异常:

1、在可能出现异常的方法后面声明throws和异常类型(代表可能有异常发生)

2、只要进行声明了异常,使用时必须对此异常进行处理(1、捕获try-catch 2、继续声明异常)

3、一般遇到异常直接进行try-catch处理,不推荐声明

在方法中进行手动声明异常并处理:

1、判断需要(设置)发生异常的条件

2、进行手动声明异常throws new Exception("");

3、对声明的异常进行处理(1、捕获try-catch 2、继续声明异常)

自定义异常类:

1、继承throwable、Exception、RuntimeException类的任意一个

2、在自定义异常类中定义构造方法,使用super("")设置异常类信息

3、在需要声明手动抛出异常的地方thow new 自定义异常类();

使用log4j进行日志记录:

1、给项目添加上log4j.jar文件(复制到项目中右键build path ==》add build path)

2、进行日志文件配置log4j.properties

3、对需要进行记录的代码块添加logger对象 Logger loggle=Logger.getLogger(类名.class);

4、给需要记录的步骤进行记录。 例如:loggle.debug(); loggle.error();

日志共分为4个等级(从大到小):

1、debug

2、info

3、warn

4、error

5、fatal

日志文件log4j.properties配置信息:

1、在控制台输入

2、在文件中输入

1)输入等级

log4j.rootLogger=debug,stdout,logfile

2)输出目的地(文件名)

log4j.appender.logfile=org.apache.log4j.FileAppender (目的地)

log4j.appender.logfile.File=jbit.log (文件名)

3)输出的格式

灵活的布局方式

log4j.appender.logfile.layout=org.apache.log4j.PatternLayout

格式

log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}%l%F%p%m%n

%d:时间格式

%l:执行的代码行

%F:文件名

%p:输出的等级信息

%m%n:换行输出日志信息