iOS异常处理学习笔记

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.  


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.

 

转载于:https://my.oschina.net/dake/blog/196716

猜你喜欢

转载自blog.csdn.net/weixin_34021089/article/details/91508021
今日推荐