Exceptions are runtime errors that a program may encounter. There are two types: synchronous from faults in input data, and asynchronous from external events. Exception handling uses try, throw, and catch keywords. Code that may cause exceptions is placed in a try block. When an exception occurs it is thrown, and the catch block handles it to prevent program termination. Multiple catch blocks can handle different exception types, and a catch-all block uses ellipses to catch any exception.