@try - catch block in Objective-C

后端 未结 3 707
旧时难觅i
旧时难觅i 2020-12-07 11:44

Why doesn\'t @try block work? It crashed the app, but it was supposed to be caught by the @try block.

 NSString* test = [NSString stringWithString:@\"ss\"];
         


        
相关标签:
3条回答
  • 2020-12-07 12:13

    Now I've found the problem.

    Removing the obj_exception_throw from my breakpoints solved this. Now it's caught by the @try block and also, NSSetUncaughtExceptionHandler will handle this if a @try block is missing.

    0 讨论(0)
  • 2020-12-07 12:33

    Objective-C is not Java. In Objective-C exceptions are what they are called. Exceptions! Don’t use them for error handling. It’s not their proposal. Just check the length of the string before using characterAtIndex and everything is fine....

    0 讨论(0)
  • 2020-12-07 12:34

    All work perfectly :)

     NSString *test = @"test";
     unichar a;
     int index = 5;
        
     @try {
        a = [test characterAtIndex:index];
     }
     @catch (NSException *exception) {
        NSLog(@"%@", exception.reason);
        NSLog(@"Char at index %d cannot be found", index);
        NSLog(@"Max index is: %lu", [test length] - 1);
     }
     @finally {
        NSLog(@"Finally condition");
     }
    

    Log:

    [__NSCFConstantString characterAtIndex:]: Range or index out of bounds

    Char at index 5 cannot be found

    Max index is: 3

    Finally condition

    0 讨论(0)
提交回复
热议问题