I think the distinction between NPE and IAE is borderline philosophical, including which one is more specific, but arguably, IAE can be more specific (”Illegal Argument Exception: no user was passed” vs/ NPE and you need to look at the source code to find out you are dereferencing a
user
that’s
null
)