iphone objective-c try-catch-finally nsexception

iphone - @try-catch block en Objective-c



try-catch-finally nsexception (3)

¿Por qué el bloque @try no funciona? Se bloqueó la aplicación, pero se suponía que estaba atrapado por el bloque @try.

NSString* test = [NSString stringWithString:@"ss"]; @try { [test characterAtIndex:6]; } @catch (NSException * e) { NSLog(@"Exception: %@", e); } @finally { NSLog(@"finally"); }


¿Estás seguro de que no es otra cosa porque el código exacto que has pegado arriba funciona bien?

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


Ahora he encontrado el problema.

Eliminar el obj_exception_throw de mis puntos de ruptura resolvió esto. Ahora está atrapado por el bloque @try y también, NSSetUncaughtExceptionHandler lo manejará si @try un bloque @try .


Todo funciona perfectamente :)

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

Iniciar sesión:

[__NSCFConstantString characterAtIndex:]: Rango o índice fuera de límites

Char en el índice 5 no se puede encontrar

El índice máximo es: 3