There has been a long discussion recently between IAE vs. NPE appropriateness for this. I was initially convinced I should never explicitly create a new NPE instance, but @sebersole persuaded me otherwise and made some excellent examples: the JDK classes for example use NPE to guard against null in parameters.