There is a set of built-in objects in ABL that represent system-generated ERROR conditions:
  • Progress.Lang.ProError
  • Progress.Lang.SysError
  • Progress.Lang.SoapFaultError
There is also a set of built-in objects that represent system-generated STOP conditions:
  • Progress.Lang.StopError
  • Progress.Lang.Stop
  • Progress.Lang.StopAfter
  • Progress.Lang.LockConflict
  • Progress.Lang.UserInterrupt
There is also a built-in object which can be used to represent an application-generated error condition. In addition, you can create your own application error objects that inherit from this class:
  • Progress.Lang.AppObject
Lastly, there is an interface that contains the common properties of all error objects as well as the StopError object:
  • Progress.Lang.Error

The following diagram shows the relationship between these objects.

Figure 1. Hierarchy of Error and Stop Classes


Since Progress.Lang.ProError implements the Progress.Lang.Error interface, all of its subclasses do as well. Note that a .NET Exception also behaves as if it implements the Progress.Lang.Error interface even though it is not an ABL object. Other than Progress.Lang.StopError, the other stop objects do not implement this interface.