1、Starting with version 3.3 of the GNU Compiler Collection (GCC), make sure
the -fobj-exceptions flag is turned on;
2、the macros NS_DURING, NS_HANDLER, and NS_ENDHANDLER
對應於@try @catch raise對應throwThe exception macros are a legacy mechanism that should only be used when binary compatibility with versions of the operating system prior to OS X v10.3 is a concern.
@tryYou can use goto or return to
exit an exception handling domain.
NS_DURING, NS_HANDLERYou cannot use goto or return to
exit an exception handling domain—errors will result.
3、The uncaught exception handler always causes the program to exit but may perform some task before this happens.
You can set a custom function as the uncaught exception handler using the NSSetUncaughtExceptionHandler function;
you can obtain the current uncaught exception handler with the NSGetUncaughtExceptionHandler function.
4、The generic exception names are string constants defined in NSException.h and
documented in
Foundation Constants Reference . These constants include the following:
NSGenericException NSRangeException NSInvalidArgumentException NSInternalInconsistencyException NSObjectInaccessibleException NSObjectNotAvailableException NSDestinationInvalidException NSPortTimeoutException NSInvalidSendPortException NSInvalidReceivePortException NSPortSendException NSPortReceiveException
5、64-bit processes that enter a zero-cost @try block incur no performance
penalty. This is unlike the mechanism for 32-bit processes, which calls setjmp() and performs additional “bookkeeping”. However,
throwing an exception is much more expensive in 64-bit executables.