目录
Java中,所有的异常都有一个共同的祖先java.lang包中的Throwable类。Throwable类有两个重要的子类Exception(异常)和Error(错误)。
举个简单的例子:
Error和Exception就像是水杯和水杯里的水的区别
“水杯”,就是代码正常运行的外部环境,如果是水杯的原因导致),这些都是外部环境有关。这些就是java中的error。
“水杯里的水”,就是正常运行的代码,水有问题,影响水质的因素就是Exception。
即程序的外部(error)和内部(exception)。
Error:
Error属于程序无法处理的错误,是JVM需要负担的责任,无法通过try-catch来进行捕获。例如,系统崩溃,内存不足,堆栈溢出等,编译器不会对这类错误进行检测,一旦这类错误发生,通常应用程序会被终止,仅靠应用程序本身无法恢复。 (即程序员无法通过程序赖恢复的)
Exception:
程序本身可以处理的异常,可以通过catch来进行捕获,通常遇到这种错误,应对其进行处理,使应用程序可以继续正常运行。Exception又可以分为运行时异常(RuntimeException,又叫非受检查异常unchecked Exception)和非运行时异常(又叫受检查异常checked Exception)。(即程序员可以通过程序来恢复的)
checked Exception:
就是在写代码的时候,写了try catch的Exception,这种Exception一般不会影响整个程序,可以由程序员手来修复异常。
unchecked Exception:
又称RunTimeException,这一类就是在代码处理了checked Exception之后,运行时候仍然会遇到的Exception。
常见的RuntimeException异常
illegalArgumentException:此异常表明向方法传递了一个不合法或不正确的参数。
NullpointerException:空指针异常(遇见最多的)
IndexOutOfBoundsException:索引超出边界异常