As we have explained in the introduction, an unexpected condition can cause JVM to create and throw an exception object, or the application code can do it. As soon as it happens, the control flow is transferred to the exception handling try statement (also called a try-catch or try-catch-finally statement) if the exception was thrown inside a try block. Here is an example of a caught exception:
void exceptionCaught(){
try {
method2();
} catch (Exception ex){
ex.printStackTrace();
}
}
void method2(){
method1(null);
}
void method1(String s){
s.equals("whatever");
}
The method exceptionCaught() calls method2() which calls method1() and passes to it null. The line s.equals("whatever") throws NullPointerException which propagates through the method call stack until caught by the try-catch block of the method exceptionCaught()...