Exception handling in C# involves using try, catch, and finally blocks. The try block contains code that might throw exceptions, the catch block handles any exceptions, and finally contains cleanup code. There are different types of exceptions like OutOfMemoryException and DivideByZeroException. Exceptions can be handled by showing error messages, logging exceptions, or throwing custom exceptions for business rule violations.