亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java異常分類和統一處理

2019-11-11 07:47:08
字體:
來源:轉載
供稿:網友
一、異常分類       java異常分為"檢查"和"非檢查"兩類,"檢查"二字的意思是,代碼編譯時,編譯器會去Check一下有沒有進行異常處理(捕獲或向上拋),對于歸類為需要檢查的異常,若沒處理,編譯就過不去。       初學時常常想exception為啥要這樣分類處理? 后來慢慢明白,異常不過兩種:主觀和客觀,一個大多數情況下可以避免,一個大多數情況下無法避免。       像NullPointerException這類異常,大多跟程序員素質掛鉤(開發好,測試好, 基本不會在系統運行后蹦出來), 基本是可以避免的,java語法當初把它們歸類為‘非檢查異常',也算給程序員和編譯器省了不少事;

       而像IOException這類跟外在環境有關的異常,幾乎是不可避免的(指不定哪一天哪一秒網絡就掛了),但是當不期而遇時,程序還是要有所作為,所以編譯器有必要督促一下程序員,Check一下,看看是否對這些可能不期而至的異常進行了處理。當Exception對象傳遞到某個節點后,程序就可以執行一些措施了,比如:給用戶返回一個提示("系統繁忙,請重試"),給監控平臺推送一個異常消息等等。

二、異常的統一返回處理1、服務器處理下面列舉Tomcat和Nginx為例Tomcat是Servlet容器,主要處理動態請求,在web.xml下配置,按http返回碼或Exception類型來處理:

<error-page>  <error-code>404</error-code>  <location>/WEB-INF/views/error/404.jsp</location> </error-page>  <error-page>  <error-code>500</error-code>  <location>/WEB-INF/views/error/500.jsp</location> </error-page>   <error-page>  <exception-type>java.lang.Throwable</exception-type>  <location>/WEB-INF/views/error/throwable.jsp</location> </error-page>Nginx是反向代理服務器,通過Http返回碼也可以很方便地指定異常時的返回頁面:

server {      listen 80 ;      server_name xx.com ;      root /var/www ;      index index.html ;      error_page 404  /404.html ;      location = /404.html {         root /usr/share/nginx/html;      }  }  2、框架處理下面列舉SPRing MVC的處理方式(1)使用Spring MVC自帶的簡單異常處理器SimpleMappingExceptionResolver; (2)實現接口HandlerExceptionResolver 自定義異常處理器; (建議使用,可支持Ajax等擴展)(3)使用@ExceptionHandler注解實現異常處理; 第(1)種,在spring-mvc.xml下配置

<!-- 將Controller拋出的異常轉到特定視圖 -->    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">        <property name="exceptionMappings">            <props>             <!-- 不同異常分開跳轉-->                 <!-- 可以自定義不同的異常-->                              <prop key="com.test.MyException1">/error/e1</prop>                <prop key="com.test.MyException2">/error/e2</prop>                <!-- 如果不想自定義異常,只配置下面的即可-->                 <prop key="java.lang.Throwable">/error/500</prop>            </props>        </property>    </bean>缺點:無法處理不需要返回html的請求;

 第(2)種,自定義HandlerExceptionResolver接口的實現類

/** * 自定義異常處理器:支持ajax *  */public class MyExceptionHandler implements HandlerExceptionResolver { public ModelAndView resolveException(HttpServletRequest request,   HttpServletResponse response, Object handler, Exception ex) {  /* 區分ajax */  boolean isAjax = request.getHeader("X-Requested-With") != null    && "xmlhttpRequest".equals(request      .getHeader("X-Requested-With").toString());  if (!isAjax) {   if (ex instanceof com.test.MyException1) {    return new ModelAndView("/error/e1");   } else if (ex instanceof com.test.MyException1) {    return new ModelAndView("/error/e2");   } else {    return new ModelAndView("/error/500");   }  }  String jsonRes = "{/"message/":/"" + "系統異常" + "/"}";// 自定義結構和前臺對接  PrintWriter out = null;  try {   response.setCharacterEncoding("utf-8");   response.setContentType("application/json;charset=UTF-8");   out = response.getWriter();   out.print(jsonRes);   out.flush();  } catch (IOException e) {   e.printStackTrace();  } finally {   out.close();  }  return null; }}并在spring-mvc.xml下注冊處理器

<bean id="exceptionHandler" class="com.test.MyExceptionHandler"/>優點:可以處理ajax請求,也方便編碼實現功能擴展,比如異常的監控等。第(3)種,@ExceptionHandler注解

@Controllerpublic class TestExceptionHandlerController {  @ExceptionHandler({ MyException1.class }) public String exception(MyException1 e) {  return "/error/e1"; } @RequestMapping("/marry") public void test() {  throw new MyException1("有問題"); }}缺點:@ExceptionHandler的方法,必須和可能拋異常的方法在一同個Controller下。(不建議使用)PS:實際情況,會將返回碼的映射交給服務器,將動態請求的一些自定義異?;蛘吖δ軘U展交給框架。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产亚洲欧美另类中文| 欧美一级大片视频| 欧美日韩免费在线观看| 欧美日韩激情视频| 国产日韩视频在线观看| 亚洲小视频在线| 国语自产精品视频在线看| 日韩免费观看视频| xvideos亚洲人网站| 亚洲福利在线播放| 欧美高清视频一区二区| 日韩精品免费在线视频观看| 午夜精品99久久免费| 国产精品网红直播| 亚洲一区二区在线| 久久伊人色综合| 久久人人爽人人爽人人片av高清| 97视频在线观看亚洲| 欧美电影在线免费观看网站| 欧美成人h版在线观看| 国产欧美日韩免费| 91精品91久久久久久| 久久久久久12| 6080yy精品一区二区三区| 91av免费观看91av精品在线| 亚洲成色777777在线观看影院| 精品国产乱码久久久久久婷婷| 亚洲精品aⅴ中文字幕乱码| 国产精品自产拍在线观看| 久久精品国产96久久久香蕉| 欧美激情视频给我| 国产精品爽爽ⅴa在线观看| 欧美丰满少妇xxxxx做受| 日韩av中文字幕在线播放| 久久久之久亚州精品露出| 国产精品69av| 国产欧美日韩综合精品| 中文字幕亚洲欧美一区二区三区| 亚洲男人天堂2024| 欧美激情按摩在线| 亚洲深夜福利网站| 欧美一区二区三区四区在线| 亚洲xxxx在线| 日韩电影中文字幕av| 国产有码在线一区二区视频| 国产精品日本精品| 成人精品aaaa网站| 国产精品久久久久久超碰| 欧美精品一本久久男人的天堂| 亚洲全黄一级网站| 国产精品久久久久久久久久久不卡| 成人日韩在线电影| 欧美日韩亚洲系列| 久久久久免费视频| 国产不卡av在线| 欧美高清一级大片| 中文字幕一精品亚洲无线一区| 久久精品国产免费观看| 在线精品视频视频中文字幕| 国产激情久久久久| 欧美影院在线播放| 亚洲国产精彩中文乱码av在线播放| 色噜噜国产精品视频一区二区| 国语自产精品视频在线看| 美女福利视频一区| 欧美性高潮床叫视频| 狠狠做深爱婷婷久久综合一区| 欧美视频中文在线看| 国产美女久久久| 亚洲免费人成在线视频观看| 国产精品欧美一区二区三区奶水| 亚洲精品大尺度| 亚洲精品v欧美精品v日韩精品| 亚洲欧洲在线观看| 亚洲男人av在线| 亚洲欧美日韩中文视频| 68精品久久久久久欧美| 亚洲黄色www| 国产成人激情小视频| 欧美性猛交xxxx偷拍洗澡| 日韩av免费在线| 欧美一级免费视频| 欧美综合国产精品久久丁香| 欧美精品在线视频观看| 欧美成人亚洲成人| 亚洲在线免费视频| 免费成人高清视频| 亚洲一区二区三区毛片| 精品中文字幕乱| 日韩国产高清污视频在线观看| 中文字幕在线亚洲| 日韩在线激情视频| 亚洲国产美女精品久久久久∴| 亚洲成成品网站| 大胆欧美人体视频| 成人免费视频a| 中文在线资源观看视频网站免费不卡| 欧美日本国产在线| 国产z一区二区三区| 久久精品视频在线观看| 欧美专区第一页| 一本色道久久综合亚洲精品小说| 91精品视频网站| 国产成人鲁鲁免费视频a| 亚洲va国产va天堂va久久| 亚洲视频在线免费看| 亚洲va久久久噜噜噜| 日韩久久免费电影| 国产精品一区二区久久国产| 色一情一乱一区二区| 国产精品久久二区| 欧美精品一区在线播放| 国产精品久久久久9999| 国产精品久久久久久久久久久久久| 伊人一区二区三区久久精品| 国产91热爆ts人妖在线| 国产精品第二页| 韩国日本不卡在线| 国产精品毛片a∨一区二区三区|国| 91久久久久久国产精品| 日韩中文字幕视频在线观看| 成人黄在线观看| 亚洲第一中文字幕| 欧美激情视频网站| 国产一区二区三区网站| 国内精品久久久| 97婷婷涩涩精品一区| 亚洲第一在线视频| 欧美一级黑人aaaaaaa做受| 国产成人精品最新| 久久综合亚洲社区| 日本a级片电影一区二区| 国产女人精品视频| 亚洲精品国产欧美| 青青草原成人在线视频| 欧美高清一级大片| 欧美俄罗斯性视频| 久久久久国产精品www| 久久在线视频在线| 亚洲欧洲国产伦综合| 疯狂做受xxxx欧美肥白少妇| 国产精品第2页| 九九九久久国产免费| 国模极品一区二区三区| 欧美美最猛性xxxxxx| 亚洲国产欧美在线成人app| 日韩av免费看| 另类专区欧美制服同性| 5252色成人免费视频| 欧美成aaa人片在线观看蜜臀| 亚洲精品自拍第一页| 奇米成人av国产一区二区三区| 欧美性猛交xxxx免费看| 国产一区二区三区丝袜| 97碰在线观看| 亚洲男人av在线| 久久久精品在线观看| 欧美在线视频在线播放完整版免费观看| 亚洲精品久久在线| 亚洲成年人在线| 国产成人精彩在线视频九色| 欧美猛交ⅹxxx乱大交视频| 成人免费网视频| 亚洲欧美日韩高清|