iOS异常处理学习笔记

来源:互联网 发布:招银网络 编辑:程序博客网 时间:2024/05/22 13:46
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对应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. 


@try
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 @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.