I am getting confused in identifying whether an exception is thrown by JVM or by the Program. Why are ArrayIndexOutOfBounds and NullPointerException thrown by the JVM, whereas IllegalArgumentException thrown by the application? Can someone please explain?
I don't think that ArrayIndexOutOfBounds and NullPointerException thrown ONLY by the JVM, you can check for Null value and throw same exception likewise IllegalArgumentException can be thrown by JVM also...
all these 3 exception falls into RuntimeException categroy so usally we should expect it to be thrown by JVM.
Regards,<br />BulletProof Monk.<br /> <br />"Nthing the Mind of man can Conceive<br />and Believe,It can achieve"
I don't think that ArrayIndexOutOfBounds and NullPointerException thrown ONLY by the JVM, you can check for Null value and throw same exception likewise IllegalArgumentException can be thrown by JVM also...
all these 3 exception falls into RuntimeException categroy so usally we should expect it to be thrown by JVM.
IllegalArgumentException will never be thrown by JVM. It is always thrown programmatically using
if you see any method in the API which throws IllegalArgumentException, then you are sure that somewhere in the beginning of the method, it has code like this
Also you are not supposed to throw ArrayIndexOutOfBoundsException or NullPointerException on your own. It is for JVM. Just think about it, when will you need to throw these exceptions. Suppose your method says that no one MUST pass a null argument to it, then you will not write your method like this
You are supposed to code your method like this-
It's not about you CAN or not. It's about what you MUST do. You can create your method and throw NullPointerException, but it is against the standards of coding...
Thanks, Ankit. I'm still not very clear. There are exam questions which ask you to identify if an exception is thrown by the JVM or progamatically thrown. How do you identify?