自定义JVM中的RMI /异常处理

时间:2009-04-06 23:55:08

标签: java exception-handling rmi

我知道自定义JVM的行为可能有点不同,我正在尝试查看我观察到的行为是否与真正的JVM相同。此外,我正在寻找一些方法来持续使这些东西工作。

我看到的最糟糕的部分是JVM完全吃掉了异常。例如:

public myMethod(String test) extends Remote {
    if(test.equals("Hey"))
        doSomething()
}

我在代码中看到两个响应为“test”传递null。一个是它记录“NullPointerException”。没有别的,只是那个字符串。

另一个是它记录下来没有任何东西。代码执行刚刚停止,并且在运行此代码后没有任何内容(即使调用方法周围有try / catch)

此外,在异常之后,调用线程似乎永远不会继续(使得这样的bug非常难以追踪)。

如果我在这个方法周围抛出一个try / catch并记录错误,那就可以了。

不可否认,我正在研究一个带有自定义代码的旧JVM,所以我不期待太多帮助,但有没有人看到这样的行为?也许在旧的JVM中?是应该通过线路抛出异常,还是应该在远程系统上打印堆栈跟踪?

将异常包装在RemoteException中并重新抛出一个合理的解决方案吗?

有什么建议吗? (除了规范一个新的JVM - 这远远超出了可能的范围,甚至都不好笑)

1 个答案:

答案 0 :(得分:0)

这最终成为可重复的行为。抛出的异常没有在我无法访问的中间层被捕获/重新抛出 - 调用我的代码的线程吞噬了异常。

根本不是虚拟机问题。

只需将其放入,我就可以接受答案。