Exceptions allow errors during program execution to be processed in a centralized manner rather than returning error codes from each function. The .NET Framework implements exceptions using the object-oriented exception model. Exceptions are handled using try-catch blocks and all exceptions inherit from the System.Exception class. Exceptions can be thrown manually using the throw keyword and will propagate up the call stack until caught by a matching catch block.