Warum funktioniert @Try-Block nicht? ____ Die App wurde abgestürzt, sollte aber vom @Try-Block erfasst werden.
NSString* test = [NSString stringWithString:@"ss"];
@try {
[test characterAtIndex:6];
}
@catch (NSException * e) {
NSLog(@"Exception: %@", e);
}
@finally {
NSLog(@"finally");
}
Jetzt habe ich das Problem gefunden.
Das Entfernen des obj_exception_throw
von meinen Haltepunkten löste dies. Jetzt wird es vom @try
-Block erfasst, und NSSetUncaughtExceptionHandler
behandelt dies, wenn ein @try
-Block fehlt.
Alles funktioniert perfekt :)
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:]: Bereich oder Index außerhalb der Grenzen
Zeichen bei Index 5 kann nicht gefunden werden
Max. Index ist: 3
Endlich Bedingung
Sind Sie sicher, dass es nicht etwas anderes ist, weil der genaue Code, den Sie oben eingefügt haben, gut funktioniert.
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
Objective-C ist kein Java. In Objective-C werden Ausnahmen genannt. Ausnahmen! Verwenden Sie sie nicht zur Fehlerbehandlung. Es ist nicht ihr Vorschlag. Überprüfen Sie die Länge der Zeichenfolge, bevor Sie characterAtIndex verwenden, und alles ist in Ordnung ...