java中异常的都是派生与Throwable,层次如下:
Throwable-----1、Error
-----2、Exception
------2.1 IOException
------2.2 RuntimeException
其中 派生与2.2的异常包含:错误类型转化、数组访问越界、访问空指针等。
java语言规范将派生于1与2.2的异常成为未检查异常(非检查型异常可以不在函数声明中添加throws语句,调用函数上也不需要强制处理,为了保证程序再出错后依然可以执行,在开发代码时最好使用try...catch的异常处理机制进行处理。)。其他异常成为已检查异常(检查型异常在编译期对异常的处理有强制性的要求。在JDK代码中大量的异常属于检查型异常,包括IOException,SQLException等等。)。
总之,一个方法必须声明已检查异常,而未检查异常要么不可控制(Error),要么就应该避免发生(RuntimeException)。
参考连接:https://blog.csdn.net/witto_sdy/article/details/83858389