5.1.3 Kinds of Exceptions

Exceptions may be divided into these kinds:

General Exceptions

General exceptions may be further categorized as either software caused or hardware caused.

Software Caused

A software-caused general exception is raised as the result of the invocation of an exception-raising procedure and is always delivered to the thread that made the call.

Such an exception may be raised at any point during thread execution. Applications and language run-time libraries may raise general exceptions to notify a thread of some exceptional (noteworthy) state in the current thread context. For example, subscript range-checking failures and assertion-checking failures may be raised as general exceptions.

Hardware Caused

A hardware exception occurs when a thread performs some action that causes an exceptional state to exist in the hardware. Such a state will cause the currently active thread to be interrupted. A hardware-caused general exception is always delivered to the thread that executed the exception-causing instruction.

Exactly which hardware events can result in an exception, the state of the machine when a hardware exception occurs, the interpretation of the exception-related information that is delivered to a user mode thread, and circumstances under which execution can be continued are specific to individual hardware exceptions. Hardware exceptions are fully defined by the Alpha System Reference Manual, which should be consulted for additional information.

In the Windows NT for Alpha Systems environment, hardware exceptions (that are not handled by the operating system itself) are reported to user level in the form of a general exception.

Unwind Exceptions

An unwind exception results from the invocation of the unwind support code by a thread, and is always delivered to the thread that invoked the unwind.

Unwind exceptions are delivered as part of the notification process that an unwind is in progress