Throw exceptions instead of returning special values or setting flags. [Exceptions]
Make failed builtins throw exceptions too. [Builtin Failures]
Make failures fatal in all contexts. [Contextual Failure]
Be careful when testing for failure of the system builtin. [Systemic Failure]
Throw exceptions on all failures, including recoverable ones. [Recoverable Failure]
Have exceptions report from the caller's location, not from the place where they were thrown. [Reporting Failure]
Compose error messages in the recipient's dialect. [Error Messages]
Document every error message in the recipient's dialect. [Documenting Errors]
Use exception objects whenever failure data needs to be conveyed to a handler. [OO Exceptions]
Use exception objects when error messages may change. [Volatile Error Messages]
Use exception objects when two or more exceptions are related. [Exception Hierarchies]
Catch exception objects in most-derived-first order. [Processing Exceptions]
Build exception classes automatically. [Exception Classes]
Unpack the exception variable in extended exception handlers. [Unpacking Exceptions]