Objective-C报”NSGenericException”异常的原因和解决办法

  • Post category:IOS

Objective-C中的”NSGenericException”异常通常表示一个未被捕获的异常。这种异常通常会在程序运行时出现,如果没有被及时捕获并处理,将会导致程序崩溃。下面是这种异常出现的一些常见原因和解决办法:

  1. 数组越界

当使用NSArray或NSMutableArray时,如果访问数组元素的下标超出了数组的边界,就会出现”NSGenericException”异常。这种情况下,可以使用try-catch语句捕获这个异常,并给用户提示。

示例代码:

@try {
    NSArray *array = @[@"1", @"2", @"3"];
    NSString *str = array[3]; //越界,抛出异常
} 
@catch (NSException *exception) {
    NSLog(@"Caught Exception: %@", exception);
    //给用户提示数组越界
} 
@finally {
    NSLog(@"Finally");
}
  1. 字符串操作问题

在使用NSString等字符串操作时,如果出现无效的字符串、空字符串等问题,就会抛出”NSGenericException”异常。这种情况下,可以使用if语句判断字符串是否为空,避免出现无效的字符串。

示例代码:

NSString *str = nil; //无效的字符串
if (!str || str.length == 0) {
    //字符串为空或长度为0,给用户提示
    NSLog(@"String is invalid");
}

总之,当出现”NSGenericException”异常时,我们需要及时捕获并处理,同时要注意程序的安全性和健壮性。