Hi All, I'm almost done with the implementation of Invocation API for DRLVM. While testing it I ran into a problem when an exception is printed twice. I created a simple application which just throws an error and it is not handled by any exception handler:
public class Test { public static void main(String [] args) { throw new Error("my"); } } In this case the launcher calls env->ExceptionDescribe() before destroying VM. Then it calls DestroyJavaVM() which identifies unhanded exception and calls an uncaught exception handler (see java.lang.Thread.getUncaughtExceptionHandler()) for the current thread. By default the handler prints the exception one more time. That's definitely differs from RI where the exception is printed out only once. To identify where the problem is I created another simple test and runs it on RI and DRLVM: public class Test { static class MyHandler implements Thread.UncaughtExceptionHandler { public void uncaughtException(Thread t, Throwable e) { System.out.println("My Handler Called!!!"); } } public static void main(String [] args) { Thread.currentThread().setUncaughtExceptionHandler(new MyHandler()); throw new Error("my"); } } Here is the output: RI: java.exe Test My Handler Called!!! DRLVM: java.exe Test java/lang/Error : my at Test.main (Test.java: 12) My Handler Called!!! As you can see RI doesn't print exception stack trace at all. But DRLVM does. To be precise the launcher does. So we need to fix the launcher..... Note: The behaviour of DRLVM you have may differ from listed above since all experiments were done on my local workspace with Invocation API implemented. --------------------------------------------------------------------- Terms of use : http://incubator.apache.org/harmony/mailing.html To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]