springMVC为我们提供了简单的异常处理方式,这样我们在项目中对一些不必要处理异常直接抛出,并且还可以知道是什么异常
首先定义一个自定义异常,也可以不创建,直接使用jdk异常
public class BusinessException extends Exception { public BusinessException() { super("业务异常"); } public BusinessException(String message) { super(message); } public BusinessException(String message, Throwable cause) { super(message, cause); } /** * 创建异常 * @param logger * @param message * @return */ public static Exception create(Logger logger, String message) { logger.error(message); return new BusinessException(message); } /** * 创建异常 * @param logger * @param message * @param cause * @return */ public static Exception create(Logger logger, String message, Throwable cause){ logger.error(message); return new BusinessException(message, cause); } /** * 判断是否为true * @param expression * @param logger * @param message * @throws Exception */ public static void checkTrue(boolean expression, Logger logger, String message) throws Exception { if (expression) { throw create(logger,message); } } }定义一个业务异常,然后在mvc配置文件中添加
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="defaultErrorView" value="error/error"/> <property name="exceptionAttribute" value="ex"/> <property name="exceptionMappings"> <props> <prop key="com.tc.itfarm.api.exception.BusinessException">error/error</prop> </props> </property> <property name="warnLogCategory" value="WARN"/> <property name="defaultStatusCode" value="500"/> </bean>
defaultErrorView:出现错误异常时默认跳转的页面
新建一个Action添加方法exceptionAttribute:定义异常处理页面用来获取异常信息的变量名,默认名为exception
exceptionMappings:需要特殊处理的异常类
warnLogCategory:警告日志类别
defaultStatusCode:默认的错误代码
@RequestMapping("testException") public void testException() throws BusinessException { throw new BusinessException(); }启动,输入地址,则会自动跳到error页面