要分得这么仔细,我向来是在catch异常的时候,添加当前属性并入异常信息。
那么显示异常的时候,我就可以马上知道异常出在什么地方。
按理说系统不会自动判断异常在前台还是后台,还是那个累或者方法,它只会告诉你异常是哪种形式。
所以要详细捕捉异常,我认为最好是捕捉异常时添加当前某些特定属性,比如类名,方法名等

解决方案 »

  1.   

    当然还得用try-catch-exception,不过,如果要想知道错误的具体地方和类型等等信息,需要多用try-catch-exception。只是把所有可能错误的地方都捕捉异常,每个地方都要写上自己的错误说明,这样,只要捕捉到这些说明,就会知道程序在错在什么地方。
    当然,需要在编程的时候,把各个异常和各类异常分析的清楚点,并尽量捕捉所有的异常
      

  2.   

    我觉得我没有表达清楚,我是说相当于对整个网站设计一个异常机制,而不是对某个java程序,比如对所有的error500,nullPointerException等类型页面都要避免出现,而代之以error.jsp等描述错误的页面。我现在就是不知道如何准确地捕捉各种类型的错误。不知道我说清楚没有?
      

  3.   

    重要提示,所有可能发生NullPointException的地方再使用之前一定要判断是否为空,比如
    void method(int[] a) {
      if(a.length == 0) ...
    }
    在a.length之前一定要判断a是不是null,否则。。找死你空指针异常是最难调试的东西。
    所有东西都要确保非空之后才能使用,这是一个原则
      

  4.   

    也就是应该是void method(int[] a) {
      if(a == null) then...
      else if(a.length == 0) ...
    }
      

  5.   

    Java中的异常机制是按照调用树向上传递的。例如下面这个方法定义:
      pulic void doGet(HttpServletResquest req,HttpServletReponse resp)
                throws ServletException,IOException{
      ...........
    }
     如果该方法中的ServletException或IOException没有被catch的话,该异常
    就回传递到调用doGet()方法的代码,如果还没有被catch,则继续向上传递。
    异常的传递路径回保存在一个Stack中,当catch到一个异常时可以通过
     xxxException.printStackTrace(System.out)获得该异常的精确信息。一般
    的做法是:
       try{      ......
         }catch(xxxException ex)
        {System.out.println("Exception Message:"+ex.getMessage());
         ex.printStackTrace();
         //异常处理代码
         }
         finally{
           //资源释放
         }
      

  6.   

    catch (Exceptio e){
        response.sendRedirect("error?errid=theid")
    }
      

  7.   

    如果是在一个项目中,那么还得自己去catch异常,当catch到了的时候,就根据这种错误的类型把页面转到处理相应错误的jsp页面去