JAVA异常

  • RuntimeException:如除零和数组越界;
  • Error:由Java运行时系统调用,如堆栈溢出;
  • Java中没有被捕获的异常,最终将交由系统默认处理程序进行处理;
  • 使用嵌套的try语句时,如果内层的没有匹配的catch,则检查外层的catch,直至检查完所有的try,由java运行时系统处理;
  • 每个try语句都必须有一条catch子句或finally子句;

异常处理的黄金法则--"早抛出后捕获"

类图

异常分类

Java语言规范将派生于Error类或RuntimeException类的所有异常称为非受检异常,所有其他异常成为受检异常

JAVA受检异常

JAVA非受检异常

JDK7的三个新异常特性

try-with-resources资源释放

语句中资源按照初始化的相反顺序关闭

try (Scanner scanner = new Scanner(Paths.get("")); PrintWriter writer = new PrintWriter("out.txt")) {
    while (scanner.hasNext()) {
        writer.write(scanner.nextLine());
    }
}
// writer先关闭scanner后关闭

finally-return

finally子句中不应该包含return语句;如果try块中也有return语句,那么try块中的返回值会被finally子句中的返回值替换;

public static void main(String[] args) throws IOException {
    System.err.println(get());
}

private static String get() {
    try {
        return "try";
    } finally {
        return "finally";
    }
}

results matching ""

    No results matching ""