3

是否有一种简单的方法可以NSAssert在条件为假时抛出由 an 生成的异常?画出我所要求的平行线:在 C 标准库中,一个失败的断言导致 a printf()and abort()。在 Java 中,失败的断言会导致java.lang.AssertionError. 在 ObjectiveC 中,一个失败的断言似乎会导致(从 NSException.h 复制):

[[NSAssertionHandler currentHandler] handleFailureInMethod:_cmd
    object:self file:[NSString stringWithUTF8String:__FILE__]
        lineNumber:__LINE__ description:(desc), ##__VA_ARGS__];

我能想到的最好的等价物是将上面的块放在我定义的宏中(我们称之为NSFail()),或者使用NSAssert(NO, ...). 这个NSFail宏有点不受欢迎,因为我似乎在定义一些本质上已经存在的东西。该NSAssert(NO,...)选项是不可取的,因为我不希望在NS_BLOCK_ASSERTIONS定义时禁用代码。

4

1 回答 1

0

又快又脏:

[[NSException new] raise]

您还可以添加描述性原因:

[[NSException exceptionWithName:@"Impossible" reason:@"Something happened that was not supposed to" userInfo:nil] raise]

NSException 苹果文档

于 2014-08-27T22:03:58.657 回答