Exception handling in Java allows programs to handle errors and unexpected conditions gracefully using try, catch, throw, throws and finally keywords. An exception is an event that occurs during program execution that disrupts normal flow of program instructions. Exceptions can be generated by the Java runtime system or manually by code. The try block contains code that might throw exceptions. The catch blocks define what to do if an exception occurs. Finally blocks contain code that always executes after try and catch blocks.