Exceptions are runtime errors or unusual program conditions. Common exceptions include division by zero, out of bounds array access, and running out of memory. Exception handling in C++ uses try, throw, and catch keywords. The try block detects exceptions, throw throws the exception, and catch catches and handles the exception. Exceptions are objects that provide information about the error. Exceptions propagate from inner blocks or function calls to the nearest matching catch block.