Compile this..  (any package you like, or no package at all)

public class Rethrow {
    public static void unchecked(Throwable t) {
        t=t;
    }
}

javap reports the byte code as..

public static void unchecked(java.lang.Throwable);
  Code:
   Stack=1, Locals=1, Args_size=1
   0:   aload_0
   1:   astore_0
   2:   return

which in hex is:

2A 4B B1

open the class file in the hex editor, search for that and change it
to:

2A BF B1

javap now reports the byte code as..

public static void unchecked(java.lang.Throwable);
  Code:
   Stack=1, Locals=1, Args_size=1
   0:   aload_0
   1:   athrow
   2:   return

jar that class up or otherwise protect it from re-write.

In your code you can now call this without wrapping with a runtime
exception.  And the stack trace is still that of the original
exception.

} catch(Exception e) {
  Rethrow.unchecked(e);
}

Obviously, use at your own risk.  No warrenties etc. :)

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to javaposse@googlegroups.com
To unsubscribe from this group, send email to 
javaposse+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to