RuntimeException被认为是未检查异常是因为它们在编译时不会被强制捕获或声明。也就是说,在编译时并不要求在方法签名中使用throws关键字声明可能抛出的RuntimeException,也不会给出编译错误提示。这与已检查异常(checked exception)不同,已检查异常在编译时必须被捕获或声明,否则会导致编译错误。
另外,RuntimeException通常是由程序员的错误操作造成的,比如空指针异常(NullPointerException)、数组越界异常(ArrayIndexOutOfBoundsException)等。因为这些异常通常表示程序逻辑错误或不当使用API,所以被认为是未检查异常,需要程序员在编写代码时注意并避免这些异常的发生。