I have a question about best practices in Java. I’m writing a class, which relies on an object at construction pretty heavily. In fact, if the object passed in at construction is null, most of the functionality wouldn’t make sense. I thought it best to throw an exception in the case where null is passed as an argument at object construction, but I don’t know what the most appropriate exception would be in this case. Should I throw a NullPointer, IllegalArgument, Instatiation, or even an Initialization exception.
I’ve seen these all used throughout the Java source codebase, and I don’t seem to be able to distinguish why a NullPointer was used in some cases and IllegalArgument used in others. I personally would have thought that if a bad argument is passed in at construction, some initialization error should occur.
IllegalArgument makes it clear, to the developer who’s used the code, what the problem is and how to fix it I would say. It also makes it clear that the method CANNOT work without that object.
NullPointer means they have to think a little bit about what the problem is (not much) and may mean the code is cleaner, but like I said above. It’s not immediately clear, from a documentation point-of-view whether your code can work with a null value or not.