0

这是我的方法:

- (IBAction)calculateButton:(id)sender {
    NSInteger dividend = 0;
    NSInteger divisor = 0;

    @try {
        dividend = [dividendField integerValue];
        divisor = [divisorField integerValue];
        [quotientField setIntegerValue: dividend / divisor]; //program crashes here
        [remainderField setIntegerValue: dividend % divisor];
    }

    @catch (NSException *exception) {
        NSAlert* alert = [[NSAlert alloc] init];
        [alert setMessageText: @"Error"];
        [alert setInformativeText: @"Invalid input!"];
        [alert runModal];
    }

}

我理解它的方式NSException是所有其他异常都继承自的通用异常处理程序;所以问题是,为什么程序崩溃而不是进入@catch块?我得到了一个EXC_ARITHMETICwhich 根据我的理解仍然是一个例外......那么为什么不@catch抓住它呢?

4

1 回答 1

5

这是因为“异常”不是 Objective-C 异常,而是来自内核的异常/陷阱。对象中不处理除以零,因此此处适用纯 C 规则。

于 2013-09-09T10:47:44.393 回答