NSExceptionHandler Class Reference
| Inherits from | |
| Conforms to | |
| Framework | /System/Library/Frameworks/ExceptionHandling.framework |
| Availability | OS X v10.0 |
| Companion guide | |
| Declared in | NSExceptionHandler.h |
Overview
The NSExceptionHandler class provides facilities for monitoring and debugging exceptional conditions in Objective-C programs. It works by installing a special uncaught exception handler via the NSSetUncaughtExceptionHandler function. Consequently, to use the services of NSExceptionHandler, you must not install your own custom uncaught exception handler.
To use these services, you set a bit mask in the singleton NSExceptionHandler instance and, optionally, a delegate. The constants comprising the bit mask indicate the type of exception to be monitored and the behavior of the NSExceptionHandler object (or, simply, the exception handler). The delegate is asked to approve the logging and handling of each monitored NSException object.
The constants for configuring exception handler behavior can be categorized in several ways:
Uncaught exceptions versus caught exceptions—or, more accurately, exceptions that would be caught (for example, by the top-level handler)
Exception type or cause: system exceptions (such as invalid memory accesses), Objective-C runtime errors (such as messages sent to freed objects), and other exceptions
Exception handler behavior: logging the exception (including a stack trace) to the console, handling the exception, and suspending program execution so the debugger can be attached
The way the exception handler handles an exception depends on the type of exception; the exception handler converts system exceptions and runtime errors into NSException objects with a stack trace embedded in their userInfo dictionary; for all other uncaught exceptions, it terminates the thread on which they occur . The constants used to configure an NSExceptionHandler object are described in Logging and Handling Constants and System Hang Constants.
The defaults command-line system also allows you to set values corresponding to the enum constants used to configure the exception handler; see “Controlling Application Response to Exceptions" for details.
Tasks
Getting the Default Exception Handler
Getting and Setting Exception Masks
-
– exceptionHandlingMask -
– exceptionHangingMask -
– setExceptionHandlingMask: -
– setExceptionHangingMask:
Getting and Setting the Delegate
Logging and handling exceptions
-
– exceptionHandler:shouldHandleException:mask:delegate method -
– exceptionHandler:shouldLogException:mask:delegate method
Class Methods
defaultExceptionHandler
Returns the singleton NSExceptionHandler instance.
Availability
- Available in OS X v10.0 and later.
Declared In
NSExceptionHandler.hInstance Methods
delegate
Returns the delegate of the NSExceptionHandler object.
Availability
- Available in OS X v10.0 and later.
Declared In
NSExceptionHandler.hexceptionHandlingMask
Returns a bit mask representing the types of exceptions monitored by the receiver and its handling and logging behavior.
Return Value
A bit mask composed of one or more constants specifying the types of exceptions monitored and whether they are handled or logged (or both). See Logging and Handling Constants for information about the constants.
Availability
- Available in OS X v10.0 and later.
Declared In
NSExceptionHandler.hexceptionHangingMask
Returns a bit mask representing the types of exceptions that will halt execution for debugging.
Return Value
A bit mask composed of one or more constants specifying the types of exceptions that will halt execution for debugging. See System Hang Constants for information about the constants.
Availability
- Available in OS X v10.0 and later.
Declared In
NSExceptionHandler.hsetDelegate:
Sets the delegate of the NSExceptionHandler object.
Parameters
- anObject
The object to receive the delegation messages described in “Logging and handling exceptions”
Availability
- Available in OS X v10.0 and later.
Declared In
NSExceptionHandler.hsetExceptionHandlingMask:
Sets the bit mask of constants specifying the types of exceptions monitored by the receiver and its handling and logging behavior.
Parameters
- aMask
A bit mask composed of one or more constants specifying the types of exceptions monitored and whether they are handled or logged (or both). You specify multiple constants by performing a bitwise-OR operation. See
Logging and Handling Constantsfor information about the constants.
Availability
- Available in OS X v10.0 and later.
Declared In
NSExceptionHandler.hsetExceptionHangingMask:
Sets the bit mask of constants specifying the types of exceptions that will halt execution for debugging.
Parameters
- aMask
A bit mask composed of one or more constants specifying the types of exceptions that will halt execution for debugging. You specify multiple constants by performing a bitwise-OR operation. See
System Hang Constantsfor information about the constants.
Availability
- Available in OS X v10.0 and later.
Declared In
NSExceptionHandler.hDelegate Methods
exceptionHandler:shouldHandleException:mask:
Implemented by the delegate to evaluate whether the delegating NSExceptionHandler instance should handle a given exception.
Parameters
- sender
The
NSExceptionHandlerobject sending the message.- exception
An
NSExceptionobject describing the exception to be evaluated.- aMask
The bit mask indicating the types of exceptions handled by the
NSExceptionHandlerobject. SeeLogging and Handling ConstantsandSystem Hang Constantsfor descriptions of the possibleenumconstants.
Return Value
YES to have the NSExceptionHandler object handle the exception, NO otherwise.
Availability
- Available in OS X v10.0 and later.
Declared In
NSExceptionHandler.hexceptionHandler:shouldLogException:mask:
Implemented by the delegate to evaluate whether the delegating NSExceptionHandler instance should log a given exception.
Parameters
- sender
The
NSExceptionHandlerobject sending the message.- exception
An
NSExceptionobject describing the exception to be evaluated.- aMask
The bit mask indicating the types of exceptions logged by the
NSExceptionHandlerobject. SeeLogging and Handling ConstantsandSystem Hang Constantsfor descriptions of the possibleenumconstants.
Return Value
YES to have the NSExceptionHandler object log the exception, NO otherwise.
Availability
- Available in OS X v10.0 and later.
Declared In
NSExceptionHandler.hConstants
Logging and Handling Constants
Use one or more of the following constants in the parameter of setExceptionHandlingMask: to specify the types of exceptions that the exception handler should monitor and whether it should handle or log them.
enum {
NSLogUncaughtExceptionMask = 1 << 0,
NSHandleUncaughtExceptionMask = 1 << 1,
NSLogUncaughtSystemExceptionMask = 1 << 2,
NSHandleUncaughtSystemExceptionMask = 1 << 3,
NSLogUncaughtRuntimeErrorMask = 1 << 4,
NSHandleUncaughtRuntimeErrorMask = 1 << 5,
NSLogTopLevelExceptionMask = 1 << 6,
NSHandleTopLevelExceptionMask = 1 << 7,
NSLogOtherExceptionMask = 1 << 8,
NSHandleOtherExceptionMask = 1 << 9
};
Constants
NSLogUncaughtExceptionMaskThe exception handler logs uncaught exceptions.
Available in OS X v10.0 and later.
Declared in
NSExceptionHandler.h.NSHandleUncaughtExceptionMaskThe exception handler handles uncaught exceptions by terminating the thread in which they occur.
Available in OS X v10.0 and later.
Declared in
NSExceptionHandler.h.NSLogUncaughtSystemExceptionMaskThe exception handler logs uncaught system exceptions.
Available in OS X v10.0 and later.
Declared in
NSExceptionHandler.h.NSHandleUncaughtSystemExceptionMaskThe exception handler handles uncaught system exceptions by converting them to
NSExceptionobjects containing a stack trace.Available in OS X v10.0 and later.
Declared in
NSExceptionHandler.h.NSLogUncaughtRuntimeErrorMaskThe exception handler logs uncaught runtime errors.
Available in OS X v10.0 and later.
Declared in
NSExceptionHandler.h.NSHandleUncaughtRuntimeErrorMaskThe exception handler handles uncaught runtime errors by converting them to
NSExceptionobjects containing a stack trace.Available in OS X v10.0 and later.
Declared in
NSExceptionHandler.h.NSLogTopLevelExceptionMaskThe exception handler logs exceptions that would be caught by the top-level handler.
Available in OS X v10.0 and later.
Declared in
NSExceptionHandler.h.NSHandleTopLevelExceptionMaskThe exception handler handles exceptions caught by the top-level handler by converting them to
NSExceptionobjects containing a stack trace.Available in OS X v10.0 and later.
Declared in
NSExceptionHandler.h.NSLogOtherExceptionMaskThe exception handler logs exceptions caught by handlers lower than the top-level handler.
Available in OS X v10.0 and later.
Declared in
NSExceptionHandler.h.NSHandleOtherExceptionMaskThe exception handler handles exceptions caught by handlers lower than the top-level handler by converting them to
NSExceptionobjects containing a stack trace.Available in OS X v10.0 and later.
Declared in
NSExceptionHandler.h.
Discussion
When exception-handling domains are nested, NSLogTopLevelExceptionMask and NSHandleTopLevelExceptionMask deal with exceptions that would make it to the top two levels of exception handlers. In the main thread of a Cocoa application, the top-level handler is the global NSApplication instance.
Declared In
ExceptionHandling/ExceptionHandler.hSystem Hang Constants
Use one or more of the following constants in the parameter of setExceptionHangingMask: to specify the types of exceptions that cause the exception to halt execution so a debugger can be attached.
enum {
NSHangOnUncaughtExceptionMask = 1 << 0,
NSHangOnUncaughtSystemExceptionMask = 1 << 1,
NSHangOnUncaughtRuntimeErrorMask = 1 << 2,
NSHangOnTopLevelExceptionMask = 1 << 3,
NSHangOnOtherExceptionMask = 1 << 4
};
Constants
NSHangOnUncaughtExceptionMaskThe exception handler suspends execution when it detects an uncaught exception (other than a system exception or runtime error).
Available in OS X v10.0 and later.
Declared in
NSExceptionHandler.h.NSHangOnUncaughtSystemExceptionMaskThe exception handler suspends execution when it detects an uncaught system exception.
Available in OS X v10.0 and later.
Declared in
NSExceptionHandler.h.NSHangOnUncaughtRuntimeErrorMaskThe exception handler suspends execution when it detects an uncaught runtime error.
Available in OS X v10.0 and later.
Declared in
NSExceptionHandler.h.NSHangOnTopLevelExceptionMaskThe exception handler suspends execution when it detects an exception that would be handled by the top-level handler.
Available in OS X v10.0 and later.
Declared in
NSExceptionHandler.h.NSHangOnOtherExceptionMaskThe exception handler suspends execution when it detects an exception that would be handled by an object other than the top-level handler.
Available in OS X v10.0 and later.
Declared in
NSExceptionHandler.h.
Discussion
When exception-handling domains are nested, NSHangOnTopLevelExceptionMask deals with exceptions that would make it to the top two levels of exception handlers. In the main thread of a Cocoa application, the top-level handler is the global NSApplication instance.
Declared In
ExceptionHandling/ExceptionHandler.hMask Definitions
The following #define constants are conveniences for specifying complete sets of exception-handling enum constants.
NSHangOnEveryExceptionMask NSLogAndHandleEveryExceptionMask
Constants
NSHangOnEveryExceptionMaskCombines via bitwise-OR all the constants listed in
System Hang Constants.Available in OS X v10.0 and later.
Declared in
NSExceptionHandler.h.NSLogAndHandleEveryExceptionMaskCombines via bitwise-OR all the constants listed in
Logging and Handling Constants.Available in OS X v10.0 and later.
Declared in
NSExceptionHandler.h.
Declared In
ExceptionHandling/ExceptionHandler.hException Global String Constants
Two of the following global string constants identify exceptions generated by the framework for Objective-C runtime errors and system exceptions such as invalid memory accesses. The other constant is used as a key to access the stack trace in the userInfo dictionary of an NSException object, when requested.
EXCEPTIONHANDLING_EXPORT NSString *NSUncaughtSystemExceptionException; EXCEPTIONHANDLING_EXPORT NSString *NSUncaughtRuntimeErrorException; EXCEPTIONHANDLING_EXPORT NSString *NSStackTraceKey;
Constants
NSUncaughtSystemExceptionExceptionIdentifies an uncaught system exception.
Available in OS X v10.0 and later.
Declared in
NSExceptionHandler.h.NSUncaughtRuntimeErrorExceptionIdentifies an Objective-C runtime error.
Available in OS X v10.0 and later.
Declared in
NSExceptionHandler.h.NSStackTraceKeyThe key for fetching the stack trace (an
NSStringobject) in theuserInfodictionary of theNSExceptionobject passed into one of the delegate methods described in “Logging and handling exceptions.”Available in OS X v10.0 and later.
Declared in
NSExceptionHandler.h.
Declared In
ExceptionHandling/ExceptionHandler.h© 2006 Apple Computer, Inc. All Rights Reserved. (Last updated: 2006-10-03)