我知道自定义 JVM 的行为可能会有所不同,我正在尝试查看我观察到的行为是否与真正的 JVM 相同。此外,我正在寻找某种方法来始终如一地使这些东西发挥作用。
我见过的最糟糕的部分是异常被 JVM 完全吃掉了。例如:
public myMethod(String test) extends Remote {
if(test.equals("Hey"))
doSomething()
}
我在我的代码中看到了两个响应,即为“测试”传入 null。一是它记录“NullPointerException”。没有别的,就是那根弦。
另一个是它什么都不记录。代码执行只是停止,并且在运行此代码之后什么都没有(即使调用方法周围有一个 try/catch)
此外,在异常之后,调用线程似乎永远不会继续(使这样的错误非常难以追踪)。
如果我围绕这个方法抛出一个 try/catch 并记录错误,它工作正常。
诚然,我正在使用自定义代码开发一个较旧的 JVM,所以我不希望有太多帮助,但是有没有人看到过这样的行为?也许在旧的 JVM 中?它应该通过网络抛出异常,还是应该在远程系统上打印堆栈跟踪?
将异常包装在 RemoteException 中并重新抛出它是一个合理的解决方案吗?
有什么建议么?(除了规范一个新的 JVM——这远远超出了可能的范围,甚至都不好笑)