在查看java.lang.RuntimeException和java.lang.Exception类之间的区别之前,您必须知道Exception层次结构。两个类Exception和Error类都派生自类Throwable(派生自类Object)。这个班RuntimeException是从班级派生出来的Exception。
所有例外都来自Exception或RuntimeException。
源自的所有异常RuntimeException都称为未经检查的异常。所有其他例外都是经过检查的例外。必须在代码中的某处捕获已检查的异常,否则将无法编译。这就是为什么它们被称为检查异常。另一方面,对于未经检查的异常,调用方法没有义务处理或声明它。
因此,编译器强制您处理的所有异常都是直接派生自的java.lang.Exception,而编译器不强制您处理的所有其他异常派生自java.lang.RuntimeException。
以下是RuntimeException的一些直接已知子类。
AnnotationTypeMismatchException,
ArithmeticException,
ArrayStoreException,
BufferOverflowException,
BufferUnderflowException,
CannotRedoException,
CannotUndoException,
ClassCastException,
CMMException,
ConcurrentModificationException,
DataBindingException,
DOMException,
EmptyStackException,
EnumConstantNotPresentException,
EventException,
IllegalArgumentException,
IllegalMonitorStateException,
IllegalPathStateException,
IllegalStateException,
ImagingOpException,
IncompleteAnnotationException,
IndexOutOfBoundsException,
JMRuntimeException,
LSException,
MalformedParameterizedTypeException,
MirroredTypeException,
MirroredTypesException,
MissingResourceException,
NegativeArraySizeException,
NoSuchElementException,
NoSuchMechanismException,
NullPointerException,
ProfileDataException,
ProviderException,
RasterFormatException,
RejectedExecutionException,
SecurityException,
SystemException,
TypeConstraintException,
TypeNotPresentException,
UndeclaredThrowableException,
UnknownAnnotationValueException,
UnknownElementException,
UnknownTypeException,
UnmodifiableSetException,
UnsupportedOperationException,
WebServiceException