Objective c 在obj-c中的try/catch外部断言

Objective c 在obj-c中的try/catch外部断言,objective-c,assert,Objective C,Assert,今天我想我可能学到了一些东西(不确定),我不是一个真正的obj-c程序员,更多的是php和java类型,但与某人一起构建iPhone应用程序让我明白了这一点,所以希望有人能帮我解释一下原因: 我在一个@try{..}和@catch(NSException*e){..}中放了一些代码,我的想法是所有东西都会被它捕获,但是另一个开发人员放了断言(false)在函数末尾,取消捕获后 为什么?断言(3)不是Objective-C本身的一部分。这是C标准的一部分。看看这本书。从C规范的7.2.1.1节中,

今天我想我可能学到了一些东西(不确定),我不是一个真正的obj-c程序员,更多的是php和java类型,但与某人一起构建iPhone应用程序让我明白了这一点,所以希望有人能帮我解释一下原因:

我在一个
@try{..}
@catch(NSException*e){..}
中放了一些代码,我的想法是所有东西都会被它捕获,但是另一个开发人员放了
断言(false)在函数末尾,取消捕获后

为什么?

断言(3)
不是Objective-C本身的一部分。这是C标准的一部分。看看这本书。从C规范的7.2.1.1节中,
assert
macro

简介

    #include <assert.h>
    void assert(scalar expression);
#包括
void断言(标量表达式);
说明

宏将诊断测试放入程序中;它扩展为一个空表达式。执行时,如果
表达式(应具有标量类型)为false(即比较值等于0),则
断言
宏将写入有关失败的特定调用的信息(包括参数的文本、源文件的名称、源行号和封闭函数的名称——后者分别是预处理宏
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
的值和标识符的值。)在标准错误流上,以实现定义的格式执行。然后,它调用
abort
函数


因此,
assert(false)
将在该点上使程序崩溃。

好的,所以程序在超出捕获范围时崩溃,但这就是我的全部观点,不要让它崩溃并捕获所有内容:)这就是为什么我不理解他超出捕获范围的断言…如果没有看到代码,恐怕很难说。你可能得和另一个程序员联系。