异常e.getMessage()有时候为null

本文探讨了一个报价系统中出现的问题,即部分厂家报价在提交后未能正确显示。通过代码审查发现,异常处理不当可能导致提交状态误判,进而影响用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

            今天业务部门反应上周录的一个询价单的报价,今天看有好几条厂家的报价都不见了。排除数据库丢失数据这种完全不可能的情况,怀疑是系统代码的bug。

            其实也一直觉得本身的实现方式容易出现实际提交失败,但页面显示是操作成功。因为我用ajax方法实现提交报价,根据Action类里返回的String message变量来判断录入成功或失败。message为null或空值时表示提交成功,否则失败。若成功,则把报价信息添加进jqGrid表。Action方法代码如下:

             try {
                 System.out.println("开始新增报价………………");
                 quotationService.addQuotation(quotation); // 新增报价
                 System.out.println("新增报价成功");
             } catch (Exception e) {
                  System.out.println(e.getMessage());
                  message = e.getMessage();
             }

Ajax代码:

      var param = $("#form3").serialize();
      $.ajax({
     url:"addOrModifyQuotation.action",
     type:"post",
     data:param,
     dataType:"json",
     success:function(data){
        if(data.message==null||data.message==""){    
           var rowdata = {
                 QUOTATION_PN: $.trim($("#quotation_pn").val()),
                 PN_STATE: $.trim($("#pn_state").val()),
                       DELIVERY_QTY: $.trim($("#delivery_qty").val()),               
                       MIN_DELQTY: $.trim($("#min_delqty").val()),       
                       QTY_UNIT: $.trim($("#qty_unit").val()),
                       PRICE:    $.trim($("#price").val()),
                       CURRENCY: $.trim($("#currency").val()),
                       DELIVERY_DAY:  $.trim($("#delivery_day").val()),
                       QUOTATION_EXPDATE:  $.trim($("#quotation_expdate").val()),
                       CERTIFY: data.quotation.certify,
                       QUO_NOTE: $.trim($("#quo_note").val()),            
                       QUO_VALID: $.trim( $("#quo_valid").find("option:selected").text() )

              }
              var id = $("#gridTable").jqGrid('getGridParam','selrow');
              $("#gridTable").setRowData(id,rowdata);

              alert("提交成功!");
     }
      else{
           alert("提交失败: " + data.message);    
    
      }
     }
      });

            之前也碰到过多次,发生异常,但输出信息e.getMessage()居然为null,导致判断不准确。还是改为message = e.toString();比较准确。

private void executeOrder(DeliveryExecuteResDto deliveryExecuteResDto) { String lockKey = "lock:deliveryExecute:" + deliveryExecuteResDto.getId(); RLock lock = redissonClient.getLock(lockKey); try { if (lock.tryLock(1, -1, TimeUnit.SECONDS)) { List<DeliveryExecuteDetailResDto> detailList = deliveryExecuteResDto.getDetailList(); List<DeliveryExecuteDetailResDto> collect = detailList.stream().filter(o -> DeliveryOrderCombinationConstant.DeliveryExecuteDetailStatus.AVAILABLE.equals(o.getStatus())).collect(Collectors.toList()); // 执行表改为进行中 DeliveryExecuteReqDto deliveryExecuteReqDto = new DeliveryExecuteReqDto(); deliveryExecuteReqDto.setStatus(DeliveryOrderCombinationConstant.DeliveryExecuteStatus.PROCESS); deliveryExecuteAdapter.updateProps(deliveryExecuteResDto.getId(), deliveryExecuteReqDto); deliveryOrderService.cutAndExecute(collect, deliveryExecuteResDto.getSendWarehouseCode(), deliveryExecuteResDto.getExecuteType(), deliveryExecuteResDto.getExecuteCode()); } else { throw new AppException("获取锁失败,等待下次执行"); } } catch (Exception e) { // 处理异步异常 log.error("DeliveryExecuteJobHandler_error executeCode>>{} deliveryCode>>{} {}", deliveryExecuteResDto.getExecuteCode(), deliveryExecuteResDto.getDeliveryOrderCode(), e); String errorInfo = e.getMessage(); if (StringUtils.isNotEmpty(e.getMessage()) && e.getMessage().length() > 250) { errorInfo = e.getMessage().substring(0, 250); } logInfoAdd(deliveryExecuteResDto, errorInfo); DeliveryExecuteReqDto deliveryExecuteReqDto = new DeliveryExecuteReqDto(); deliveryExecuteReqDto.setFailReason(errorInfo); if (deliveryExecuteResDto.getRetryCount() != null && deliveryExecuteResDto.getRetryCount() > 2) { /
03-14
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值