The point of using a try catch block is more robust error handling for your Java application. Sensitive or error-prone code is placed within a try block. If an exception occurs within the try block AND the matching exception can be found in the correpsonding catch block, the
thread of execution will jump from the line that has the offending code and immediately goes to the catch block and execute whatever's there. You can use the catch block to roll back whatever you've done to an initial setting, do some clean up or damage control, inform the user and gracefully exit, whatever. You can then proceed to do something else, and the client need not be any wiser as to what happened.
If there is NO matching exception in a catch block, this exception will be thrown back to the calling method (main() in our example above) and the cycle repeats again. Is the calling method inside a try block? Is there a matching catch? etc. If the exception is still not caught it will be thrown further back, to whatever method called the calling method in the first place, and so on.
If the calling method is main() itself and the exception is still not caught, it will be handled by the default exception handler. The application will terminate and a stack trace will be produced.
The throws keyword is used if you want to programmatically throw an exception.