return render(request,'top.html',{'content':content,'form':form})
上面的代码抛出java.lang.ArithmeticException而没有堆栈跟踪而没有消息。我没有在try块中创建/抛出空的ArithmeticException。 什么java方法调用/代码可以抛出没有堆栈跟踪且没有错误消息的java.lang.ArithmeticException?
并且有没有人在java中看到过ArithmeticException之前没有消息? 日志输出:
null java.lang.ArithmeticException
答案 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 来关闭此优化。