throw null
Thursday, January 18th, 2007 03:45 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
I saw some typo Java code in my CVS update today which called throw null
. I wondered just what that would do. null
can be cast to any object, so I thought it might get caught by the first catch
clause. Alternatively, I thought it might escape all catch clauses (dangerous!). The answer?
try {
throw null;
} catch (IllegalArgumentException e) {
System.err.println("Caught IllegalArgumentException " + e);
e.printStackTrace();
} catch (NullPointerException e) {
System.err.println("Caught NullPointerException " + e);
e.printStackTrace();
} catch (Throwable t) {
System.err.println("Caught Throwable " + t);
t.printStackTrace();
}
Caught NullPointerException java.lang.NullPointerException
java.lang.NullPointerException
at TestStuff.main(TestStuff.java:156)
Java (even pre-1.5) automatically creates a NullPointerException if you throw null. It's like very specialized autoboxing.