2、 the macros NS_DURING, NS_HANDLER, and NS_ENDHANDLER 对应于 @catch
raise对应throw
The 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.
You can use goto or return to exit an exception handling domain.
NS_DURING, NS_HANDLER
You 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 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.