Use properties and methods on .NET exception objects
- Last Updated: June 19, 2019
- 2 minute read
- OpenEdge
- Version 13.0
- Documentation
System.Exception supports
a common set of Microsoft .NET properties and methods that
are inherited by all .NET Exception objects.
In addition, each derived Exception object can
have its own unique set of properties and methods. In ABL, you can
access all of these Microsoft properties and methods.
In addition,
with implementation of the Progress.Lang.Error interface
provided by OpenEdge, you can also access .NET Exception objects
in a manner generally consistent with accessing ABL error objects,
including Progress.Lang.ProError and
all of its subclasses. This is particularly true of accessing .NET exception messages.
.NET Exception objects
all support a Message property that returns the
human-readable message for the exception. In addition, each Exception object
supports an InnerException property that can reference
another Exception object that has directly lead
to throwing the current Exception object. Thus, this InnerException property
can reference an exception chain with any number of Exception objects,
each of which returns a message from its own Message property. Using
the OpenEdge-extended GetMessage( ) method,
you can access every message from this entire chain of Exception objects
without having to walk the InnerException object
chain.
The following table shows
a summary of all the OpenEdge-extended properties and methods,
and how they work with .NET Exception objects.
| Property or method | Description |
|---|---|
CallStack property |
Lists the ABL procedure and class call stack at
the time a .NET method was called or a .NET data member
or property was accessed that caused the exception. Note: The .NET StackTrace property
is entirely different and lists only the stack of .NET calls
within the CLR where the .NET exception originated. |
GetMessage
(
n
) method |
Returns the nth message in a message list. For a
.NET Exception object, each message in addition to the first one in
the list represents a separate inner exception message. Also, each such message
indicates both the type name of the
|
GetMessageNum
(
n
) method |
Non-functional (always returns 0). |
NumMessages property |
Returns the number of messages listed for the Exception object,
including all of its inner exceptions. |
Severity property |
Non-functional (always returns 0). |
As noted at the start of this topic, different types of .NET Exception objects can have their own unique set of properties and
methods. For example, the FileNotFoundException, shown in
the previous code fragment, has a FileName property that
identifies the name of the file that cannot be found. You can only access such custom
properties and methods directly on the .NET Exception
object itself, and the information they provide is not available using OpenEdge-extended
properties or methods. So, for an inner exception, you need to walk the exception chain to
locate a given Exception object in order to access its
custom properties and methods.