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. Methods use throws to declare exceptions they can throw.