Java中Error和Exception

一、联系

  • Error和Exception都继承自父类Throwable

Java中Error和Exception

二、区别

 Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。Error类描述了Java运行时系统内部错误和资源耗尽错误,一般指与JVM或动态加载等相关的问题,如虚拟机错误,动态链接失败,系统崩溃等。 这类错误是我们无法控制的,同时也是非常罕见的错误。所以在编程中,不去处理这类错误。VirtualMachineError,其子类有OutOfMemoryError,*Error。

Exception(异常):是程序本身可以处理的异常。Exception可以分为两类:

  • 第一类是运行时异常(RuntimeException)(编译器不要求强制处置的异常)可不必对其处理,系统自动检测处理 这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。运行时异常的特点是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常),classCastException(类型转换异常)等。
  • 第二类是非运行时异常,即编译异常(编译器要求必须处置的异常)。这类异常必须捕获进行处理,否则会出现编译错误。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。处理手段包括使用throws自居抛出,或者通过try-catch语句捕获并处理,如IOException、SQLException等。

Java中Error和Exception