@Override
public StreamObserver<MdtDialoutArgs> mdtDialout(StreamObserver<MdtDialoutArgs> responseObserver) {
return new StreamObserver<MdtDialoutArgs>() {
@Override
public void onError(Throwable t) {
logger.warn( "Encountered error in mdtDialout");
}
@Override
public void onCompleted() {
responseObserver.onCompleted();
}
@Override
public void onNext(MdtDialoutArgs arg0) {
try {
....
....
...
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
上面的代码抛出一个java.lang.ArithmeticException,没有堆栈跟踪,也没有消息。我没有在try块中创建/抛出空的ArithmeticException。
哪种Java方法调用/代码可以抛出java.lang.ArithmeticException而没有堆栈跟踪和错误消息?
并且有没有人看到过Java中的ArithmeticException,之前没有任何消息?
日志输出:
null java.lang.ArithmeticException
最佳答案
从Javadoc:
异常算术条件时引发ArithmeticException
已经发生了。例如,整数“除以零”将引发
此类的实例。可以构造ArithmeticException对象
由虚拟机执行,就像suppression were disabled and/or the stack trace was not writable一样。
您是否以独特的方式在该块中构造Throwable对象?