异常
1.异常的概述
定义:在程序运行过程中出现错误
分类:
- 编译错误:不能运行,在编译阶段就报错
- 运行错误:能正常编译,但运行报错
- 逻辑错误:结果错误,但能正常编译,运行
处理异常的手段:
默认:一旦出现异常,程序会立刻结束
try…catch…finally
try:监控代码,监控可能发生错误的代码
如果try里代码无异常,,则整个try执行完毕,不进入catch
如果try里面有异常,则try里面后面的代码不会执行,如果有对应的cathch一定会进入catch
catch:捕获catch里面指定类的异常
语法:catch(类名 对象名),类名–》异常的类名
catch可以一次出现多个
要求:子类必须在父类的前面;catch后面的类型不能出现相同的
结果:只会执行一个,第一次匹配的执行
finally:不管是否有发生异常,finally一定会被执行
除非:
遇到了System.eixt(1);不会执行finally
finally里面的代码也出现异常
程序死亡
cpu终止
小结:
try…catch里面代码执行时二选一的
try是必选,catch和finally是二选
throw与throws
1、throw,抛出异常,内部动作,有错误自己解决不了
1、语法:
位置:方法里面
语法:throw 异常对象名;
2、如果抛出异常,一定要处理
1、try
2、throws声明
2、throws,声明异常----》外部,2、请求外援的动作
1、语法:
位置:方法名小括号后面
语法:throws 类名;
2、调用的方法的一旦声明了异常,那么外援一定要处理异常
如果没有处理,则编译报错
2.异常类结构:
Throwable 父类
Error Exception
1、Error:错误,程序本身无法修复的错误
2、Exception:java程序本身会抛出的错误,需要我们及时处理
CheckedException编译异常
RuntimeException:运行时异常
InputMismatchException:输入类型不匹配异常-
NullPointException
ArrayIndexOutOfBoundsException
StringIndexOutOfBoundsException
ArithmeticException:算数异常
NumberFormatExcetpion:转换异常
FileNotFoundException文件找到异常
ClassNotFoundException类找不到异常
3.日志
作用:把异常信息长久保存到文件
步骤:
1、导入jar包
2、定义配置文件: log4j.properties(固定文件名+固定位置)
3、使用:Logger
布局:
log4j.rootLogger=debug,con,filedebug, filefatal
设置输出级别,目的地
等级本身及其以上
日志记录分等级:【从小到大】
debug调试
info信息
warn警告
error错误
fatal严重错误
目的地,可以有多个,目的地地字:
1、控制台:ConsoleAppender
区分控制台显示的颜色
log4j.appender.目的地名称.Target=System.err/System.out
格式
log4j.appender.目的地名称.layout=org.apache.log4j.SimpleLayout
log文件:FileAppender
log4j.appender.目的地名称.File=文件名
log4j.appender.filedebug.Append = false–》false表示覆盖,true表示追加
当前文件保存的日志等级
log4j.appender.filefatal.Threshold = warn–》当前文件保存的日志等级
log4j.appender.filedebug.Threshold = debug
设置目的地的类型
log4j.appender.目的地名字=org.apache.log4j.目的地类型
layout:布局,日志输出的格式
log4j.appender.目的地名称.layout=org.apache.log4j.SimpleLayout
SimpleLayout --》简单格式
HTMLLayout–》html格式
PatternLayout–》自定义格式
自定义格式:ConversionPattern
log4j.appender.filefatal.layout.ConversionPattern=[%9p]-%m%n
p:输出的等级
m:消息,输出的内容
n:换行