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