提示: 几种常见异常
ArithmeticException数学算数错误异常
ArrayIndexOutOfBoundsException数组越界
ClassCastException 类型转换异常
InputMismatchException用户输入异常
NullPointerException空指针异常
FileNotFoundException文件没有找到
IllageArgumentExceotion 非法的参数
1 异常:既是一种意外,是程序没有按照正常或期望的方式进行。
2 必须对检查型异常进行处理 SQLExceptions try -catchinally throws
3 final可选 catch可选但是二者不能同时为空
try:中的异常,系统(JVM虚拟机)自动检测是什么异常
catch的异常,是子父类的关系。产生异常,从上到下匹配.一定先捕获子类异常,再捕获父类异常。
catch最后一个异常,要用Exception进行拦截,拦截所有的异常
不希望后续的代码有影响
throws 异常之后的语句也不执行
异常被捕获的那条语句会执行,但不会输出结果,因为这句话有错误。不会执行。
String s;
try{
System.out.println("adfaf"+s.length);//会执行,但不会有结果,因为已经有错误
}catch(){
}
try -finally try中有错误,没有人去理会这个错误,因为会抛出异常没有人去管理他,后续的代码不会执行
将全部的代码放进try中,一条有错误整个后续程序都不会执行,很危险。只要有可能发生危险的地方用try-catch接受 或者像上抛出异常
4 执行过程
1)当Java程序执行try块,catch块的时候遇到了return 或throws语句,这两个语句都会导致该方法结束,
(2)但是系统执行这两个语句并不会结束该方法,而是去寻找异常处理中是否包含finally块,
(3)如果包含finally块,先去执行finally块----只有当finally块执行结束后系统才会再次跳回到try块和catch块里面的return或者throw,
(4)如果finally块也使用了return 或throw等导致该方法结束的语句,finally块已经终止了该方法,系统不会再跳回try块、catch块里面的任何代码;
所以我们尽量避免在包装类里面使用throw 或 return
5 检查型 非检查型异常
(1) 受检异常 ( 检查型异常)SQLExpection编译的时候就出现
java编译器在编译阶段就会抛出的异常。要求程序员必须捕获或声明抛出的异常
(2)运行时异常、上面的各种异常都是运行时异常; 运行的时候抛出异常
(3)Error不可恢复的异常,由JVM虚拟机抛出的不可逆转的异常
内存溢出 磁盘空间不足
6 实际开发中一般不会自己定义异常,会影响开发效率
自定义的异常要继承Exception类
7 throws向上抛出异常
8异常:自定义的异常必须显示抛出异常,否则程序虚拟机无法识别
网友评论