• 统一异常处理


    1.在jsp阶段,web.xml中,提供了error-page的写法,当发生指定异常的时候,指定跳转页面:

    <error-page>
        <error-code>500</error-code>
        <location>/error.jsp</location>
    </error-page>
        
    <error-page>
        <exception-type>cn.sz.gl.util.MoneyLessException</exception-type>
            <location>/error.jsp</location>
    </error-page> 


    2.在spring中,也提供了一些异常处理的方式:

    a. 通过@ExceptionHandler注解,来指定异常发生时需要完成的操作;
    这种方式,只局限于注解所在的类中生效;
    为了能在所有控制器类中应用,可以写一个父类,添加@ExceptionHandler注解,然后让所有控制器类继承该父类;
    b. 借助于spring提供的SimpleMappingExceptionResolver异常处理类,完成异常配置
    c. 也可以自己来创建自己的异常处理类,实现HandlerExceptionResolver接口

    <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
            发生异常时,默认跳转的页面
            <property  name="defaultErrorView" value="error_simple" ></property>
            异常发生时,保存错误信息的对象的名字,默认叫做exception
            <property name="exceptionAttribute" value="ex" ></property>
        <property name="exceptionMappings" >
            <props>
                <prop key="cn.sz.gl.util.MoneyLessException" >error_simple</prop>
                    
            </props>
        </property>
    </bean> 
    @Transactional(isolation=Isolation.READ_COMMITTED,propagation=Propagation.REQUIRED,rollbackFor= {AccountLessException.class,MoneyLessException.class})(事务)
        @Override
        public void inventoryReductionAndReduceBalance(Integer bookid,Integer accid) {
            
            //减库存数量
            storehousemapper.inventoryReduction(bookid);
            
            //查询库存
            Integer count = storehousemapper.findStorehouse(bookid);
            System.out.println("count:=================="+count);
            if(count<=0) {
                throw new AccountLessException("库存不足");
            }
            //减余额
            Account account = new Account();
            account.setAccid(accid);
            //这里需要查询现在的余额和书籍的价格
            //查询账户余额
            Double oldBalance = accountmapper.findBalance(accid);
            //查询书籍信息
            Book book = bookmapper.findByIdBook(bookid);
            //获取书籍的价格
            Double bookPrice = book.getBookPrice();
            //减去书籍价格后新的余额
            Double balance = oldBalance-bookPrice;
            if(balance<0) {
                throw new MoneyLessException("余额不足");
            }
            account.setBalance(balance);
            
            accountmapper.reduceBalance(account);
        }
  • 相关阅读:
    Jquery 取值,赋值学习总结
    JQuery 常用代码
    Spring Boot JPA
    QueryDSL通用查询框架学习目录
    正确理解MySQL中的where和having的区别
    spring jpa 带参数分页查询(一)
    mysql在表的某一位置增加一列、删除一列、修改列名
    Spring AOP注解配置demo
    java 分页对象以及数据库分页查询
    ztree点击加号+触发ajax请求
  • 原文地址:https://www.cnblogs.com/2839888494xw/p/13393713.html
Copyright © 2020-2023  润新知