An exception, in UOS terms, is a report of an error, encapsulated in a class. A pointer to an instance of this class can be passed to other objects, including other exception instances. Chained exceptions are exception instances that contain references to other exception instances, which contain references to others, and so on. The last exception added to the chain is the one that is passed to other code. It provides an error report from the called code that represents that code's perception of what went wrong. If further information is needed about why something went wrong, the next exception in the chain can be examined to provide that information. The calling code does not know ahead of time if the exception being returned is single or chained. A nil exception is simply an indication of no error.
UOS Exceptions have no inherent relationship to hardware exceptions or exceptions handled by various languages, such as C++. Each UOS Exception has a facility ID which uniquely identifies the component that generated the error, and a code which uniquely identifies the type of error from that component.