Day04
1 异常 Exception
异常会终止程序的运行
try{
}catch{
}finally{
}
1 )try不能单独写 后面 要跟 catch{} 或者finally 也可以同时接 finally catch{}
2 )try 中可以放多个语句 如果一个语句发生了异常 不再执行后面的语句 接着执行catch{} finally{} 以及程序 后面的异常
3 )不管有没有异常都会去执行的块 不管方法有没有结束 finally 都会是最后执行的
4)如果没有异常 就不会走try
5) 可以有多个catch() 出现异常后 不再执行try后面的语句 如果异常发生而没有 catch () 或者catch( )没有匹配上就不会执行后面的程序了
6)无论 try 中是否发生异常 是否有return 是否在catch()中得到处理 finally都会执行一般最后执行
7) catch{}应该有相应的异常类型 可以有多个catch() (从小到大来排列的)先捕获小的再捕获大的 执行时 只匹配第一个
8)try catch finally 可以套用 可以嵌套在另一个 try catch() finally 任意部分中 可重新抛出异常
9) JDK1.7 增加的新特性
在异常捕获机制中支持自动关闭操作 主要解决异常捕获机制中对io流的自动关闭
try(需要关闭流的声明){
}catch(){
10) 区分final finally finalize()
final 常量修饰符 finally 异常捕获里要执行的 finalize () gc 自动调用的 一般需要重写该方法 object内中的
2 异常的分类
经常出现的错误(RuntimeExption 或者其子类)不用catch 由系统自动处理 (用户不必对其处理)程序会中断
检查异常必须要处理 要么抛出去 要么catch() 得
自定义的异常用来说明业务逻辑的错误
3 Throw 和 Throws
throw 用于抛出异常 手动抛出异常 (可以是系统定义的异常类 也可以是自定义的异常)除了RuntimeException()及其子类异常不用 声明有异常抛出外,其他的抛出的异常一定要声明有异常抛出
throw 一旦被执行 它后面的语句就不再执行了 而它所在的方法也不会再返回有意义的值了可以有多条但最后执行一条 一般放在判断语句中
一般自己抛出的异常可以自己捕获做一些前期的处理 catch (throw e); 可以再抛异常那个方法调用此方法就由那个方法来处理
throws 用于声明有异常抛出
重写方法需要抛出与原方法所抛出异常类型一致异常或者不抛出异常 如果父类有多个异常 则可以抛出父类方法异常类的一个子集
可以抛出父类方法抛出的异常的子类异常(不能抛父类异常的父类型不能比他大)
子类不能抛出新的异常,和比父类异常还大的异常
4)e 中的常用的方法 printStactTrice () getMessage();