Szukaj…


Składnia

  • NSAssert (warunek, fmtMessage, arg1, arg2, ... ) (argumenty kursywą są opcjonalne) - zapewnia, że warunek jest oceniany na prawdziwą wartość. Jeśli tak się nie stanie, asercja zgłosi wyjątek (NSAssertionException), z fmtMessage sformatowanym z podanymi argumentami

Twierdzenie

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

Te twierdzenia upewniają się, że nie podajesz trójkąta niepoprawnych kątów, rzucając wyjątek, jeśli tak robisz. Jeśli nie rzucą wyjątku niż trójkąt, to wcale nie będący prawdziwym trójkątem, może powodować błędy w późniejszym kodzie.

Obsługa błędów i wyjątków z blokiem try catch

Wyjątki stanowią błędy na poziomie programisty, takie jak próba dostępu do elementu tablicy, który nie istnieje.

Błędy to problemy na poziomie użytkownika, takie jak próba załadowania pliku, który nie istnieje. Ponieważ podczas normalnego wykonywania programu spodziewane są błędy.

Przykład:

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

WYNIK:

Wystąpił wyjątek: NSRangeException

Oto kilka szczegółów: *** - [__ NSArrayI objectAtIndex:]: indeks 3 poza granicami [0 .. 2]

Wykonanie w końcu bloku



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow