wake-up-neo.com

@try - catch block in Objective-c

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");
 }
180

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.

72

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

117
iTux

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
12
mbogh

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 ...

0
Claus Bönnhoff