1、 java.lang.Error
用于标记严重错误。合理的应用程序不应该去try/catch这种错误。绝大多数的错误都是非正常的,就根本不该出现的。
2、RuntimeException:
如NullPointerException、IndexOutOfBoundsException等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。
3、非运行时异常
必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等
未检查的异常(unchecked exceptions):Error和RuntimeException 及其子类
检查了的异常(checked exceptions):所有其他的Exception类