SCJP 5.0 About Exceptions
Here's an exercise from a book?
How is IllegalArgumentException used? (Choose all correct options.)
A. It is thrown by the JVM when a method is called with incompatible argument types.
B. It is thrown by the JVM to indicate arithmetic overflow.
C. It is thrown by certain methods of certain core Java classes to indicate that preconditions have been violated.
D. It should be used by programmers to indicate that preconditions of public methods have been violated.
E. It should be used by programmers to indicate that preconditions of nonpublic methods have been violated.
The correct answers are C and D. But in my opinion, A and E seems to be correct too. Is a RuntimeException the same as "the JVM" throw the exception? Can someone give its opinion?

