Sök…


Syntax

  • NSAssert (villkor, fmtMessage, arg1, arg2, ... ) (args i kursiv är valfritt) - Anger att villkoret utvärderar till ett verkligt värde. Om det inte gör att påståendet kommer att göra ett undantag (NSAssertionException), med fmtMessage formaterat med de angivna argmen

hävda

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

Dessa påståenden ser till att du inte ger en triangel felaktiga vinklar genom att kasta ett undantag om du gör det. Om de inte kastar ett undantag än triangeln, inte alls är en riktig triangel, kan det orsaka några fel i senare kod.

Fel- och undantagshantering med testfångstblock

Undantag representerar fel på programmerare-nivå som att försöka komma åt ett arrayelement som inte finns.

Fel är problem på användarnivå som att försöka ladda en fil som inte finns. Eftersom fel förväntas under normal körning av ett program.

Exempel:

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

PRODUKTION:

Ett undantag inträffade: NSRangeException

Här är några detaljer: *** - [__ NSArrayI objectAtIndex:]: index 3 utanför gränserna [0 .. 2]

Utför slutligen blockera



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow