Java常用类库与技巧

Java异常 异常处理机制主要回答了三个问题

What:异常类型回答了什么被抛出

Where:异常堆栈跟踪回答了在哪抛出

Why:异常信息回答了为什么被抛出

Java的异常体系

Java常用类库与技巧

Error和Exception的区别

从概念角度解析Java的异常处理机制:

1.Error:程序无法处理的系统处理,编辑器不做检查(如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢出等)

2.Exception:程序可以处理的异常,捕获后可能恢复

RuntimeException:不可预知的,程序应当自行避免

非RuntimeException:可预知的,从编译器校验的异常

从责任角度看:

1.Error属于JVM需要负担的责任

2.RuntimeException是程序应该负担的责任

3.Checked Exception可检查异常是Java编译器应该负担的责任(编译时就应该捕获或者抛出的异常)

常见Error以及Exception RuntimeException

1.NullPointerException - 空指针引用异常

2.ClassCastException - 类型强制转换异常

3.IllegalArgumentException - 传递非法参数异常

4.IndexOutOfBoundsException - 下标越界异常

5.NumberFormatException - 数字格式异常

非RuntimeException

1.ClassNotFoundException - 找不到指定class的异常

2.IOException - IO操作异常

3.SQLException - SQL异常

Error

1.NoClassDefFoundError - 找不到class定义的异常(原因:类依赖的class或者jar不存在;类文件存在,但是存在不同的域中;大小写问题,javac编译的时候是无视大小写的,很有可能编译出来的class文件就与想要的不一样)

2.StackOverflowError - 深递归导致栈被耗尽而抛出的异常

3.OutOfMemoryError - 内存溢出异常

Java的异常处理机制

抛出异常:创建异常对象,交由运行时系统处理

捕获异常:寻找合适的异常处理器处理异常,否则终止运行

private static int doSomething(){ try { int i = 10/0; System.out.println("i= " + i); } catch (ArithmeticException e) { System.out.println("ArithmeticException: " + e); return 0; } catch (Exception e) { System.out.println("Exception: " + e); return 1; } finally { System.out.println("Finally"); return 2; } } public static void main(String[] args) { System.out.println("执行后的值为:" + doSomething()); System.out.println("执行结束"); }

Java常用类库与技巧

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssfdx.html