Exception handling in C++ allows programs to handle errors and exceptions gracefully. try blocks enclose code that could throw exceptions, and catch blocks handle specific exception types. If an exception is thrown but not caught, stack unwinding destroys local variables and searches for an outer catch block. Exceptions remove error handling code from the normal flow and allow programs to recover, hide or ignore exceptions.