@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对象?

10-07 13:18