异常
一、异常
1、定义
在程序运行过程中出现错误。
2、分类
异常分为3类:
1、运行报错(或称为:运行时异常,RuntiemException):能够正常编译,但是运行时报错。
2、编译报错/语法报错(属于非运行时异常:CheckedException):不能运行,在编译时就会报错。
3、逻辑异常(也属于非运行时异常:CheckedException):结果与预期的不符合,但是能够正常运行,不会出现报错的现象。
处理异常的手段:
1、try-catch-finally:处理异常
2、throw-throws:抛出异常
3、默认情况:遇到错误的默认处理手段是:程序直接终止在本行代码。
3、异常结构
Throwable:所有异常的父类;
Error:错误,这是程序本身无法修复的错误,是Throwable的子类;
Exception:Java程序本身会抛出的错误,需要我们及时的处理。
4、try-catch-finally
1、try:监控代码,监控可能发生错误的代码,如果代码没有错误,就执行完毕,如果有错误就进入catch,try里面的代码不宜过多。
2、catch:捕获异常,语法:catch(类名 对象名),类名:异常类名。
catch可以一次性出现多次:要求:1、子类必须在父类的前面;2、catch后面的类型不能出现相同的;3、只会执行一个,第一次匹配成功之后,就不会执行后面的异常了。
3、finally:无论是否发生异常都要执行finally。
finally的除非:
1、如果遇到了System.exit();就不会执行finally;
2、finally里面的代码也报错了,就不会执行finally
3、程序死亡
4、cpu终止
注:try是必须要有的,catch和finally二选一,也可以三个一起用。
5、throw-throws
1、throw:抛出异常—内部动作;有错误自己解决不了的抛出去给别人解决;
语法:throw 异常对象名; 位置:方法里面。
2、throws:声明异常—外部动作;请求外援的动作;
语法:throws 类名; 位置:方法小括号外面。
注:调用的方法一旦声明了异常,那外援一定要处理异常,如果没有处理,则编译报错。
二、日志
1、定义和作用
定义:
作用:把异常信息长久保存文件。
2、log4j 架包
Java里面是没有提供日志框架的架包,需要自己导入架包;
日志架包:log4j,log4j2,slf4j,logback
今天讲的是log4j架包;
导入步骤:
1、右击项目
2、
3、找到这个架包
4、将log4j架包复制到jar的文件夹里面去
5、附加进去,右击log4j架包
6、在列表中查看
7、查看是否附加进去了
8、只要有这个log4j的架包就可以了
学习步骤:
1、导入jar架包;
2、有固定的名称:log4j.properties,有固定的位置:放在src里面
3、配置文件
Logger log = Logger.getLogger(TestLogger.class);
1、设置输出级别,目的地可以有多个;
log4j.rootLogger = debug,con,warn,error,fatal
日志记录:分等级(小----大)
debug---->调试
info----->信息
warn----->警告
error----->错误
fatal----->严重错误
### 设置Logger输出级别和输出目的地 ###
log4j.rootLogger=debug, stdout,logfile
### 把日志信息输出到控制台 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
### ConsoleAppender 控制台,System.err 控制字体颜色 SimpleLayout 布局###
### 把日志信息输出到文件:jbit.log ###
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=jbit.log
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
### FileAppender 输出到文件; jbit.log 文件名称;PatternLayout 布局;ConversionPattern自定义布局,自定义布局要自己写格式;%d{yyyy-MM-dd HH:mm:ss}%l %F %p %m%n 这就是自己写的###
2、[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CNHv1x1L-1585098759240)(C:\Users\acer\Pictures\Saved Pictures\Image 8.png)]
bit.log 文件名称;PatternLayout 布局;ConversionPattern自定义布局,自定义布局要自己写格式;%d{yyyy-MM-dd HH:mm:ss}%l %F %p %m%n 这就是自己写的###
2、自定义格式的符号表示![在这里插入图片描述](https://img-blog.csdnimg.cn/20200325091720538.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200325091734527.png)