尝试和捕获不是在iPhone中处理异常

时间:2012-01-16 07:31:43

标签: iphone ios nsexception

我使用以下代码来捕获错误,当ind.row不是有效值或有时它变为nil

@try {
        if(ind.row<[[treeNode flattenElements] count])
        {
            [self.mTableView scrollToRowAtIndexPath:ind atScrollPosition:UITableViewScrollPositionTop animated:YES];
        }


    }
    @catch (NSException *e) {
        NSLog(@"%@",e);

    }   

但有时执行此代码时会出现此错误

Assertion failure in -[NSIndexPath row], /SourceCache/UIKit_Sim/UIKit-1262.60.3/UITableViewSupport.m:1948`

可能是造成此错误的原因以及为什么不处理异常

3 个答案:

答案 0 :(得分:3)

iOS中的断言不会抛出异常,因此您无法捕获它们。

您需要弄清楚拨打-row时出现的问题。我的第一个猜测是“ind”已经被释放或其他东西。

答案 1 :(得分:1)

您必须自己检查索引,生成并引发异常:NSException Class Reference

+ (void)raise:(NSString *)name format:(NSString *)format, ...

答案 2 :(得分:1)

实际上它已经捕获了异常...我已经设置了objc例外的标志停止。当我删除它捕获异常....正如@stilesCrisis所指出的那样,ind值在当时为null这个例外......对于trble