There is no real, clear difference between exceptions thrown by the JVM or by the programmer (or the
Java program running in the JVM). Some exceptions, like NullPointerException, are thrown by the JVM under certain circumstances, but you can also throw NullPointerException yourself:
throw new NullPointerException("Something is null"); I'm not 100% sure, but I think that this is not something you really need to know for
SCJP.