扔进AOP后

 覃思慧_419 发布于 2022-12-20 11:54

我有一个名为"LoginException"的自定义异常.它可能会从任何类中抛出.所以我想在投掷后做一些建议(例如,打印"Ooops").所以我决定使用AOP.像这样的东西:

@Aspect
public class LogoutAdvice {

    @AfterThrowing(throwing = "e")
    public void myAfterThrowing(JoinPoint joinPoint, LoginException e) {    
        System.out.println("IDS HABBENING");
    }
}

码:

@Transactional
    public DynamicTable getTable(int status_id, HttpServletRequest request)
            throws HibernateException, LoginException, SQLException {
        try {
            ResultSet rs = requestDAO.getRequestResultSet(
                    cookieDAO.get(SESS_ATTR, request), status_id);
            DynamicTable dt = new DynamicTable();
            String[] columnArray;
            LinkedList dataList = new LinkedList();
            ResultSetMetaData rsmd = rs.getMetaData();
            int columnCount = rsmd.getColumnCount();
            columnArray = new String[columnCount - META_COLUMNS_COUNT];
            for (int i = 0; i < columnArray.length; i++) {
                columnArray[i] = rsmd.getColumnName(META_COLUMNS_COUNT + i + 1);
            }
            dt.setTitleArray(columnArray);

            while (rs.next()) {

                String[] dataArray = new String[columnArray.length];
                for (int i = 0; i < columnArray.length; i++) {
                    dataArray[i] = ParamUtil.toString(rs
                            .getObject(META_COLUMNS_COUNT + i + 1));
                }

                dataList.add(dataArray);

            }
            dt.setDataList(dataList);

            return dt;
        } catch (SQLException e) {
            String message = e.getMessage();
            String[] errorsArray = AuthErrorsConst.ERROR;
            for (int i = 0; i < errorsArray.length; i++) {
                if (message.contains(errorsArray[i])) {
                    throw new LoginException(); // LOOK AT THIS

                }
            }
            throw e;
        }

    }

我怎样才能做到这一点?

1 个回答
  • 确保抛出异常

    catch (SQLException e) {
          String message = e.getMessage();
          String[] errorsArray = AuthErrorsConst.ERROR;
          for (int i = 0; i < errorsArray.length; i++) {
              if (message.contains(errorsArray[i])) {
                  System.out.println("throwing LoginException")// NEW
                  throw new LoginException(); // LOOK AT THIS
              }
          }
          throw e;
    }
    

    关于

    @Aspect
    public class LogoutAdvice {
    
        @AfterThrowing(throwing = "e")
        public void myAfterThrowing(JoinPoint joinPoint, LoginException e) {    
            System.out.println("IDS HABBENING");
        }
    }
    

    确保 Spring能够使用@Aspect并且能够扫描您的LogoutAdvice方面,通常我会告诉它们如何

    @Aspect
    @Component// to be scanned by Spring
    public class LogoutAdvice {
    

    改变你@AfterThrowing

    @AfterThrowing(pointcut = "execution(* *.*(..))",throwing = "e")
    

    2022-12-20 11:56 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有