框架为SSH
异常处理方式为在业务逻辑层捕获异常,向上抛出
通过Struts的声明式异常来捕获用户自定义异常
然后统一的异常处理页面现在流程是这样:
运行A页面,页面的js上有一个Ajax方法,读取后台数据,以表格的形式显示在A页面在测试的时候发现,不管在业务逻辑层或者是Action中,加入System.out.println(1/0);
都无法跳转到统一的一次处理页面
我现在的做法是在Action中使用try catch来捕获异常,然后输入json格式的数据
在js中解析但是这样的话,struts2的声明式异常还有什么用?大家是怎么处理这样的情况

解决方案 »

  1.   

    ajax本来就是异步操作,怎么能给你统一跳转呀。
    既然是json数据的。那么可以try catch处理。
    在catch中返回一个识别的字符,在前台判断,如果是识别的字符串,手动跳转到错误页面。并且在catch中用log记录错误消息,以便调试。
      

  2.   

    做个过滤器,如果发现抛出异常,就返回特定json类。可以把异常信息等也包放到这个类里。然后在页面获取JSON时候判断返回值是不是是不是错误信息,再判断是否需要重新跳转页面,或者alert出这个异常信息就可以。是这个意思吗?
      

  3.   

    呃,好像不是这个意思。
    那发现抛出异常,就返回错误页面的result,这样行吗?
      

  4.   

    ajax本来就是异步操作,怎么能给你统一跳转呀?
    这个还真是没有往这方面想,我现在用的处理方式就是你说的那样来处理的
    以为可以用声明式异常,没想到不行
      

  5.   

    我也有用拦截器,但是当碰到返回类型为json时,
    是处理不了的
      

  6.   

    后台出现错误的时候 JSON中加个标致
    try{
        result = "flag:'success', data:{}";

    catch() {
        result = "flag:'false', data:{}";
    }
    这样在前台获取的时候 先判断flag标致 正常的话则进行正常处理 异常的话则显示操作失败或者跳转到错误友好页面