国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

SpringMVC處理異常的4種方式

2019-11-14 14:53:03
字體:
供稿:網(wǎng)友

sPRingmvc處理異常有三種方式: 1.在一個controller中定義一個方法,用@ExceptionHandler注解標(biāo)注。(優(yōu)先級最高)

@ExceptionHandler

public ModelAndView handleException(Exception exception){
    ModelAndView mv = new ModelAndView("error/500");
    mv.addObject("ex",exception);
    return mv;

}

 

@ExceptionHandler
public String handleException(Exception exception){
    return "error/500";
}

2.全局異常設(shè)置(下載地址 優(yōu)先級次之)

<!-- 將Controller拋出的異常轉(zhuǎn)到特定View,異常映射處理器 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <!-- 定義異常處理頁面用來獲取異常信息的變量名,默認(rèn)名為exception -->
    <!--<property name="exceptionAttribute" value="ex"></property>-->
    <property name="exceptionMappings">
        <props>
            <prop key="java.lang.Throwable">error/500</prop>
        </props>
    </property>
</bean>

3.自定義異常處理(下載地址 優(yōu)先級次之)

public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
    System.out.println("自定義異常處理器");
    logger = LoggerFactory.getLogger(ex.getClass());
    ResponseStatus responseStatus = AnnotationUtils.getAnnotation(ex.getClass(), ResponseStatus.class);
    ModelAndView modelAndView = new ModelAndView("error/500");
    //自定義的異常
    if (responseStatus != null) {
        modelAndView.setViewName("error/" + responseStatus.value().value());
    } else {
        //其他異常,做一些其他的處理,如發(fā)送錯誤報警郵件,記錄日志
        logger.error(ex.getMessage(), ex);
    }
    return modelAndView;
}

4.自定義一個異常類,繼承RunTimeException(優(yōu)先級最低)

@ResponseStatus(value = HttpStatus.NOT_FOUND,reason = "No such resource")
public class NotFoundException extends RuntimeException {
 
}

當(dāng)拋出我們自定義的異常時,就會構(gòu)造出相應(yīng)的狀態(tài)碼,一般我們還是設(shè)置SimpleMappingExceptionResolver,來進(jìn)行統(tǒng)一跳轉(zhuǎn)到錯誤頁面。
最佳實踐:還是用全局的SimpleMappingExceptionResolver最好,在jsp里面寫日志,當(dāng)需要進(jìn)行細(xì)粒度的控制時,還是自定義異常解析器為好,其他的自我感覺不好用!如有不正確的,歡迎指正! ?

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 巩义市| 红原县| 桂平市| 锡林浩特市| 温州市| 景泰县| 兰州市| 会理县| 许昌县| 南澳县| 余姚市| 汉阴县| 雅江县| 盐城市| 银川市| 大丰市| 遵义市| 新和县| 常德市| 德惠市| 延长县| 台江县| 会昌县| 宁海县| 北京市| 庆安县| 三河市| 边坝县| 扶余县| 清流县| 曲周县| 安新县| 宾阳县| 富顺县| 德格县| 汝南县| 洪湖市| 奎屯市| 册亨县| 忻州市| 延安市|