您的位置:首页 > 其它

异常

2016-02-26 09:19 155 查看
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、让异常信息更友好

***异常能够改变程序执行的流程
***提供程序出错的解决方式之一

异常分为两大类:
Error + Exception(RuntimeException+受检查异常/编译期异常)
java程序写成的文件叫java源代码文件(.java)-->编译,字节码文件(后缀名是.class)-->运行,JVM
异常的五个关键字try{可能产生异常的代码} catch(异常类型 参数名){打印异常信息} finally{强制执行的代码,一般包括释放资源等}
try如果不紧跟这catch语句,则必须添加finally语句
try语句后续可以接多个catch语句,如果包含多个catch语句块,需要先写子类异常,再写父类异常
throws:抛出异常:方法名 throws 异常类型名称
throw:抛出一个具体的异常 ,写法:方法体内throw 一个具体的异常对象;
面试笔试必考题:写出不少于5个的常见异常
ClassCastException:类型转换异常
NullPointerException:空指针异常
ArithmeticException:数学异常
IndexOutOfBoundsException:索引越界异常
IllegalArgumentException:参数异常
FileNotFoundException:文件没有找到异常
ClassNotFoundException:没有找到类异常
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: