Java面试问题之六
请详细叙述一下Java异常与错误之间的区别。
Java中的异常分为两大类:运行时异常和受检查异常。其中运行时异常是不被Java编译器检查的,一般都是些导致程序无法正常运行的异常。而受检查异常是指除了运行时异常之外的所有异常,这些异常可以在try/catch语句块中捕获并且在编译时是受编译器检查的。
而Error类及其子类表示程序本身无法修复的错误,它和运行时异常的相同之处是:Java编译器都不会去检查它们,当程序运行时出现它们的时候,都会终止正在执行的程序。
但两者不同的是:Error类及其子类表示的错误通常是由Java虚拟机抛出的,在JDK中已经预定义好的一些错误类型,比如内存溢出(OutOfMemoryError)和栈空间溢出(StackOutofMemoryError)等等。在一般程序中,程序员一般不会扩展Error类来创建用户自定义的错误类。而RuntimeException类表示程序代码中的错误,它是可扩展的,程序员可以根据特定的问题领域来创建相关的运行时异常类。