Поиск…


Синтаксис

  • NSAssert (условие, fmtMessage, arg1, arg2, ... ) (аргументы курсивом являются необязательными) - утверждает, что условие оценивает истинное значение. Если это не так, как утверждение будет вызывать исключение (NSAssertionException), с fmtMessage, отформатированным с предоставленными аргументами

Утверждая

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

Эти утверждения гарантируют, что вы не дадите треугольник неправильным углам, выбросив исключение, если вы это сделаете. Если они не выбрасывают исключение, чем треугольник, а вовсе не настоящий треугольник, могут возникнуть некоторые ошибки в более позднем коде.

Обработка ошибок и исключений с помощью блока catch try

Исключения представляют ошибки на уровне программистов, такие как попытка получить доступ к элементу массива, которого не существует.

Ошибки - это проблемы на уровне пользователя, такие как попытка загрузить файл, который не существует. Потому что ошибки ожидаются при нормальном выполнении программы.

Пример:

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

ВЫХОД:

Исключено: исключение NSRangeException

Вот некоторые подробности: *** - [__ NSArrayI objectAtIndex:]: индекс 3 за пределами границ [0 .. 2]

Выполнение блока finally



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow