异常:
Throwable:包含Error 和 Exception。
Error :比较严重的问题 ,系统性问题 (虚拟机出题,系统出现问题)
Exception:程序出现的一些问题,通常是由于程序人员考虑不周等情况 发生的问题
(程序出现的问题,这些问题本省可以避免)
异常分类:
1.运行时异常:不要求强制处理,只有在运行时可能发生异常
2.受检查异常(check):必须处理,不能会不会发生异常
(有些操作 jvm认为可能出现异常几率较大 所以要求强制处理 )
异常处理:
throws:主要针对受检查异常 ,写在方法上,表明该方法具有抛出异常的功能 ,能抛异常根据throws 后面跟的异常类型
( public static void main(String[] args) throws FileNotFoundException )
运行时异常不需要 throws 标明具有抛异常的功能
抛出:
1.jdk抛出:FileInputStream fis=new FileInputStream("D:/11.txt");
异常由jdk抛出来 逐级向上抛出 最后如果main也没处理 那么就抛给虚拟机,虚拟机接受异常 立即停止执行
2.人为抛出:throw 抛异常
throw new Exception("除数不能为0");
捕获:try {} catch (Exception e) {} catch (Exception e) {} finally{}
catch捕获异常 针对 try中的代码块,catch在捕获的时候只能捕获参数指定的异常,如果异常被捕获,那么不在向下捕获,跳出捕获模块,执行try catch模块下面的语句
try中产生异常,try中后面代码不在运行
finally:不能try中代码有木有异常 都会执行,除非强制退出JVM
一般 catch (Exception e) {} 放在catch模块的最后位置
一般不建议使用 try {try {} catch (Exception e) {} } catch (Exception e) {} ,try catch嵌套,
建议大家采用try {} catch (Exception e) {} catch (Exception e) {}
catch中不建议编写业务代逻辑码 try中代码要尽量少
//非常不建议,不够规范
// try {
// int n=i/j;
// }finally{
// System.out.println("--finally--");
// }
自定义异常:
1、能够更好的查找程序的错误
2、让异常信息更友好
***异常能够改变程序执行的流程
***提供程序出错的解决方式之一
原文:http://11159573.blog.51cto.com/11149573/1743012