iphone उद्देश्य-सी में @ ट्री-पकड़ ब्लॉक




objective-c try-catch-finally (3)

@ ट्री ब्लॉक क्यों काम नहीं करता है? इसने ऐप को दुर्घटनाग्रस्त कर दिया, लेकिन इसे @ ट्री ब्लॉक द्वारा पकड़ा जाना था।

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

 @try {
    [test characterAtIndex:6];

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

सभी काम पूरी तरह से :)

 NSString *test = @"test";
    unichar a;
    int index = 5;

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

लॉग इन करें:

[__NSCFConstantString characterAtIndex:]: रेंज या अनुक्रमणिका सीमाओं से बाहर

इंडेक्स 5 पर चार नहीं मिल सकते हैं

अधिकतम सूचकांक है: 3


क्या आप सुनिश्चित हैं कि यह कुछ और नहीं है क्योंकि ऊपर चिपका गया सटीक कोड ठीक काम करता है।

2010-07-29 16:45:57.677 test[93103:207] Exception: *** -[NSCFString characterAtIndex:]: Range or index out of bounds
2010-07-29 16:45:57.678 test[93103:207] finally

अब मुझे समस्या मिली है।

मेरे ब्रेकपॉइंट्स से obj_exception_throw को obj_exception_throw से हल हो गया। अब यह NSSetUncaughtExceptionHandler ब्लॉक द्वारा पकड़ा गया है और NSSetUncaughtExceptionHandler इसे संभालेगा यदि NSSetUncaughtExceptionHandler ब्लॉक गुम है।





nsexception