Use the exception command to display an exception’s type at any time during debugging. If you use the exception command without an option, the type shown is determined by the setting of the dbx environment variable output_dynamic_type:
If it is set to on, the derived type is shown.
If it is set to off (the default), the static type is shown.
Specifying the -d or +d option overrides the setting of the environment variable:
If you specify -d, the derived type is shown.
If you specify +d, the static type is shown.
For more information, see exception Command.
You can intercept, or catch, exceptions of a specific type before the stack has been unwound. Use the intercept command with no arguments to list the types that are being intercepted. Use -all to intercept all exceptions. Use typename to add a type to the intercept list. Use -x to exclude a particular type to the excluded list to keep it from being intercepted. Use -set to clear both the intercept list and the excluded list, and set the lists to intercept or exclude only throws of the specified types
For example, to intercept all types except int, you could type:
(dbx) intercept -all -x int
To intercept exceptions of type Error, you would type:
(dbx) intercept Error
After intercepting too many CommonError exceptions, you could exclude these exceptions by typing:
(dbx) intercept -x CommonError
Typing the intercept command with no arguments would then show that the intercept list includes unhandled exceptions and unexpected exceptions, which are intercepted by default, plus exceptions of class Error except for those of class CommonError.
(dbx) intercept -unhandled -unexpected class Error -x class CommonError
If you then realize that Error is not the class of exceptions that interests you, but you do not know the name of the exception class you are looking for, you could try intercepting all exceptions except those of class Error by typing
(dbx) intercept -all -x Error
For more information, see intercept Command.
Use the unintercept command to remove exception types from the intercept list or the excluded list. Use the command with no arguments to list the types that are being intercepted (same as the intercept command). Use -all to remove all types from the intercept list. Use typename to remove a type from the intercept list. Use -x to remove a type from the excluded list.
For more information, see unintercept Command.
The whocatches command reports where an exception of typename would be caught if thrown at the current point of execution. Use this command to find out what would happen if an exception were thrown from the top frame of the stack.
The line number, function name, and frame number of the catch clause that would catch typename are displayed. The command returns “type is unhandled” if the catch point is in the same function that is doing the throw.
For more information, see whocatches Command.