Objective-C Language
Manejo de errores
Buscar..
Sintaxis
- NSAssert (condition, fmtMessage, arg1, arg2, ... ) (los argumentos en cursiva son opcionales): afirma que la condición se evalúa a un valor verdadero. Si no es así, la aserción generará una excepción (NSAssertionException), con el formato fmtMessage con los argumentos proporcionados
Afirmando
@implemenetation Triangle
...
-(void)setAngles:(NSArray *)_angles {
self.angles = _angles;
NSAssert((self.angles.count == 3), @"Triangles must have 3 angles. Array '%@' has %i", self.angles, (int)self.angles.count);
CGFloat angleA = [self.angles[0] floatValue];
CGFloat angleB = [self.angles[1] floatValue];
CGFloat angleC = [self.angles[2] floatValue];
CGFloat sum = (angleA + angleB + angleC);
NSAssert((sum == M_PI), @"Triangles' angles must add up to pi radians (180°). This triangle's angles add up to %f radians (%f°)", (float)sum, (float)(sum * (180.0f / M_PI)));
}
Estas afirmaciones aseguran que no se le den ángulos incorrectos a un triángulo, lanzando una excepción si lo hace. Si no lanzaron una excepción que el triángulo, el no ser un triángulo verdadero podría causar algunos errores en el código posterior.
Manejo de errores y excepciones con el bloque try catch
Las excepciones representan errores a nivel de programador, como intentar acceder a un elemento de matriz que no existe.
Los errores son problemas de nivel de usuario, como intentar cargar un archivo que no existe. Porque se esperan errores durante la ejecución normal de un programa.
Ejemplo:
NSArray *inventory = @[@"Sam",
@"John",
@"Sanju"];
int selectedIndex = 3;
@try {
NSString * name = inventory[selectedIndex];
NSLog(@"The selected Name is: %@", name);
} @catch(NSException *theException) {
NSLog(@"An exception occurred: %@", theException.name);
NSLog(@"Here are some details: %@", theException.reason);
} @finally {
NSLog(@"Executing finally block");
}
SALIDA:
Se produjo una excepción: NSRangeException
Aquí hay algunos detalles: *** - [__ NSArrayI objectAtIndex:]: índice 3 más allá de los límites [0 .. 2]
Ejecutando finalmente el bloque
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow