非受检异常(RuntimeException):这类异常是编程人员的逻辑问题。应该承担责任NullPointerException,ClassCastException,ArrayIndexsOutOfBoundsException,ArithmeticException(算术异常,除0溢出)
受检异常(非RuntimeException):这类异常是由一些外部的偶然因素所引起的;受检异常可以控制义务逻辑。
Exception, FileNotFoundException, IOException, SQLException.
受检异常和非受检异常的区别就是:是否强制要求调用者必须处理此异常,如果强制要求调用者必须进行处理,那么就使用受检异常,否则就选择非受检异常(RuntimeException)
对于方法内部主动抛出的异常:throw new Exception(),若是受检异常,则要在方法上throws Exception,若是非受检异常,则不需要这么做(可以做也可以不做)。
Service异常设计:
1.抛出带状态码RumtimeException异常
2.抛出指定类型的RuntimeException异常
一般来讲,如果系统没有别的特殊需求的时候,在开发设计中,建议使用第二种方式针对service 异常,我们可以自定义各种异常来继承RumtimeException异常。