功能开发中出现一个诡异的异常信息,信息如下

2021-09-27 13:44:57.487 [http-nio-5020-exec-1] ERROR o.a.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NumberFormatException: Character n is neither a decimal digit number, decimal point, nor "e" notation exponential mark.] with root cause
java.lang.NumberFormatException: Character n is neither a decimal digit number, decimal point, nor "e" notation exponential mark.at java.base/java.math.BigDecimal.<init>(BigDecimal.java:518)at java.base/java.math.BigDecimal.<init>(BigDecimal.java:401)at java.base/java.math.BigDecimal.<init>(BigDecimal.java:834)at com.fastonetech.service.impl.SubAccountRecordService.getConsumeAmountByTenantId(SubAccountRecordService.kt:66)at com.fastonetech.service.impl.SubAccountRecordService$$FastClassBySpringCGLIB$$68edf4dd.invoke(<generated>)at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)at com.fastonetech.service.impl.SubAccountRecordService$$EnhancerBySpringCGLIB$$28235181.getConsumeAmountByTenantId(<generated>)at com.fastonetech.service.impl.SubAccountService.getAccountRelatedDataTenantId(SubAccountService.kt:276)at com.fastonetech.service.impl.SubAccountService$$FastClassBySpringCGLIB$$468e952e.invoke(<generated>)at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)at com.fastonetech.service.impl.SubAccountService$$EnhancerBySpringCGLIB$$ae9f6d14.getAccountRelatedDataTenantId(<generated>)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.base/java.lang.reflect.Method.invoke(Method.java:566)at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:282)at org.springframework.cloud.context.scope.GenericScope$LockedScopedProxyFactoryBean.invoke(GenericScope.java:485)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)at com.fastonetech.service.impl.SubAccountService$$EnhancerBySpringCGLIB$$387f7ace.getAccountRelatedDataTenantId(<generated>)at com.fastonetech.controller.SubAccountController.balance(SubAccountController.kt:42)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.base/java.lang.reflect.Method.invoke(Method.java:566)at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1063)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)at javax.servlet.http.HttpServlet.service(HttpServlet.java:655)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:228)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723)at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.base/java.lang.Thread.run(Thread.java:834)

定位出现问题的原因:

 override fun getConsumeAmountByTenantId(tenantId: Long): BigDecimal{val queryWrapper: QueryWrapper<SubAccountRecord> = QueryWrapper<SubAccountRecord>()queryWrapper.select("sum(amount) as sum_amount ")queryWrapper.allEq(mapOf("tenant_id" to tenantId, "transaction_type" to TransactionType.ORDER_DEDUCTION))val sumAmountMap=this.getMap(queryWrapper)return sumAmountMap["sum_amount"].toString().toBigDecimal()}
 val sumAmountMap=this.getMap(queryWrapper)

可能获取的是null值,会报错

     override fun getConsumeAmountByTenantId(tenantId: Long): BigDecimal{val queryWrapper: QueryWrapper<SubAccountRecord> = QueryWrapper<SubAccountRecord>()queryWrapper.select("sum(amount) as sum_amount ")queryWrapper.allEq(mapOf("tenant_id" to tenantId, "transaction_type" to TransactionType.ORDER_DEDUCTION))val sumAmountMap=this.getMap(queryWrapper)?: return BigDecimal.ZEROreturn sumAmountMap["sum_amount"].toString().toBigDecimal()}

增加一个null值的判断逻辑

 val sumAmountMap=this.getMap(queryWrapper)?: return BigDecimal.ZERO

Character n is neither a decimal digit number, decimal point, nor “e“ notation exponential mark.相关推荐

  1. python decimal用法_Python decimal模块使用方法详解

    decimal 模块:decimal意思为十进制,这个模块提供了十进制浮点运算支持 1.可以传递给Decimal整型或者字符串参数,但不能是浮点数据,因为浮点数据本身就不准确. 2.要从浮点数据转换为 ...

  2. python中安装decimal模块_python decimal和fractions模块

    1.简介 默认,浮点数学缺乏精确性 decimal 模块提供了一个Decimal 数据类型用于浮点数计算.相比内置的二进制浮点数实现float这个类型有助于金融应用和其它需要精确十进制表达的场合,控制 ...

  3. mysql decimal长度_mysql decimal类型与decimal长度用法详解

    以下内容转自:http://blog.csdn.net/zhanghao143lina/article/details/53816884 三者的区别介绍 float:浮点型,含字节数为4,32bit, ...

  4. mysql int number_Oracle/MySQL decimal/int/number 转字符串

    有时客户需要流水数据,当导出为excel的时候,客户编号等很长数字的栏位,被excel变成科学记数法,无法正常查看. 因此,需要将Oracle/MySQL中的decimal/int 转 varchar ...

  5. Oracle/MySQL decimal/int/number 转字符串

    有时客户需要流水数据,当导出为excel的时候,客户编号等很长数字的栏位,被excel变成科学记数法,无法正常查看. 因此,需要将Oracle/MySQL中的decimal/int 转 varchar ...

  6. php decimal类型,有关decimal类型的文章推荐10篇

    下面小编就为大家带来一篇MySQL中Decimal类型和Float Double的区别(详解).小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧MySQL中存在float, ...

  7. mysql——decimal类型与decimal长度

    分为三种: float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位) double:双精度实型,含字节数为8,64bit,数值范围-1.7E308~1.7E3 ...

  8. mysql decimal类型最大长度_mysql decimal类型与decimal长度用法详解

    三者的区别介绍 float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位) double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E ...

  9. decimal 整数 mysql_MySQL decimal类型

    在本教程中,我们将向您介绍MySQL DECIMAL数据类型以及如何在数据库表中有效地使用它. MySQL DECIMAL数据类型简介 MySQL DECIMAL数据类型用于在数据库中存储精确的数值. ...

最新文章

  1. 深度 | 香港中文大学(深圳)张大鹏教授:生物特征识别的新进展 | CCF-GAIR 2019
  2. 蓝桥杯“基础练习:特殊回文数
  3. 串行 spi Flash 跨页编程的注意点
  4. python怎么将输入的数字变成列表_Python键盘输入转换为列表的实例
  5. QT Creator应用程序开发——信号与槽
  6. centos7 yum 安装lnmp
  7. 电脑配置及价格_游戏主机推荐 AMD锐龙R52600X配RTX2060组装电脑配置清单及价格
  8. 解决VMWARE安装macos系统找不到虚拟磁盘问题
  9. linux at查看进程命令,at命令 - Linux命令大全 | linux教程
  10. 教你读懂Ajax的工作原理
  11. 单条MySQL最长_MySQL 单条记录长度最大65535
  12. iview 后台管理系统 搭建
  13. linux怎么编译sharedptr,如何使用智能指针(例如auto_ptr r shared_ptr)在Linux上使用C++生成链接列表数据结构?...
  14. render注册一个链接组件_vue: 单文件组件 render函数
  15. 极酷WIFI深度剖析免费WIFI
  16. 如何制作SCI论文中的Figure(二)
  17. 有关SQLite数据库的一些实证数据,有一定历史比较和参考意义
  18. 三方接口短信验证码怎么选择好的平台?
  19. 使用LSTM生成序列、自动问答使用?分割即可!
  20. RK3399PRO 硬件H264编码,RTSP推流笔记

热门文章

  1. (Java实现) 洛谷 P1115 最大子段和
  2. 影响互联网产品节奏的五大因素
  3. C# SolidWorks 二次开发 API --- 2018版 中文翻译 ModelDocExtension 方法
  4. 常见花材的固定的方法有哪些_花材的固定
  5. DPDK 限速模块 qos_meter
  6. 认识图片放大工具PhotoZoom的菜单栏
  7. 燕山大学课程实践项目报告:ISBN号识别系统的设计与开发
  8. 论文解读:Spelling Error Correction with Soft-Masked BERT
  9. 【vivado IP核】第4篇:ILA使用介绍
  10. 欢迎访问我的简书博客 http://www.jianshu.com/users/3b5c25e9ec5d/latest_articles