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 execution that disrupts normal program flow. Exceptions can be generated by the Java runtime system or manually by code. The try block contains code that might throw exceptions. Catch blocks handle specific exceptions. Finally blocks contain cleanup code that always executes regardless of exceptions. Methods must declare exceptions they throw using throws.