1. 粉红色的是受检查的异常(checked exceptions),其必须被 try{}catch语句块所捕获,或者在方法签名里通过throws子句声明.受检查的异常必须在编译时被捕捉处理,命名为 Checked Exception 是因为Java编译器要进行检查,Java虚拟机也要进行检查,以确保这个规则得到遵守.
绿色的异常是运行时异常(runtime exceptions),需要程序员自己分析代码决定是否捕获和处理,比如 空指针,被0除…
而声明为Error的,则属于严重错误,如系统崩溃、虚拟机错误、动态链接失败等,这些错误无法恢复或者不可能捕捉,将导致应用程序中断,Error不需要捕捉。
知识点:
1. 子类重写父类方法,不能抛出比父类方法更多的异常;
2. 任何一个方法都可以允许抛出Error和RuntimeException, 无需显式声明throw Error和RuntimeException.
3. 允许存在try..finally结构,即使没有catch块的存在。
4. 报错ExceptionInInitializerError。这是因为类加载时不会为实例变量赋值,对象创建时不会为静态变量赋值。
5. 常见异常与Error:
a) StackOverflowError 堆栈空间溢出
b) IllegalArgumentException此异常表明向方法传递了一个不合法或不正确的参数。
c) IllegalStateException在不合理或不正确时间内唤醒一方法时出现的异常信息。换句话说,即 Java 环境或 Java 应用不满足请求操作。
d) ArraylndexOutOfBoundsException 用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。