Thorwable类所有异常和错误的超类,有两个子类Error和Exception,分别表示错误和异常。 其中异常类Exception又分为运行时异常(RuntimeException),非运行时异常。
运行时异常都是RUntimeexception及其子类如NullPointerException、IndexOutOfBoundsException等,又叫不检查异常,程序可以捕获处理也可以不捕获,它由程序的逻辑错误导致,我们应该尽可能避免这种异常。
相反非运行时异常时runtimeexception以外的异常,是检查异常,必须被try catch捕获或者在方法名中通过throws声明。它必须在编译时期捕获除了,否则编译不通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常。
throw和throws的区别
https://www.cnblogs.com/liuyaozhi/p/5812700.html
https://blog.csdn.net/qq_18505715/article/details/73196421