java.lang.ArithmeticException抛出没有堆栈跟踪和没有消息

时间:2018-01-12 06:36:32

标签: java exception grpc-java

return render(request,'top.html',{'content':content,'form':form})

上面的代码抛出java.lang.ArithmeticException而没有堆栈跟踪而没有消息。我没有在try块中创建/抛出空的ArithmeticException。 什么java方法调用/代码可以抛出没有堆栈跟踪且没有错误消息的java.lang.ArithmeticException?

并且有没有人在java中看到过ArithmeticException之前没有消息? 日志输出:

  

null java.lang.ArithmeticException

2 个答案:

答案 0 :(得分:1)

来自Javadoc

  

当异常算术条件时抛出ArithmeticException   已经发生了。例如,一个整数“除以零”抛出一个   这个类的实例。可以构造ArithmeticException对象   由虚拟机好像suppression were disabled and/or the stack trace was not writable

您是否以独特的方式在该块中构建Throwable对象?

答案 1 :(得分:0)

对于一些频繁抛出的异常,JVM 会做优化隐藏堆栈跟踪。 当服务器重新启动时,该异常的堆栈跟踪将再次显示。

优化版

<块引用>

java.lang.ArithmeticException: null

重启后

<块引用>

java.lang.ArithmeticException: / 在处为零 java.math.BigDecimal.divideAndRound(BigDecimal.java:4106) at java.math.BigDecimal.divide(BigDecimal.java:5153)

您可以添加 VM 选项 -XX:-OmitStackTraceInFastThrow 来关闭此优化。