Objective-C Language
오류 처리
수색…
통사론
- NSAssert (condition, fmtMessage, arg1, arg2, ... ) (이탤릭체로 표시된 args는 선택 사항입니다.) - 조건 이 true 값으로 평가됩니다. 만약 assertion이 아닌 경우에는 제공된 인수로 포맷 된 fmtMessage 와 함께 예외 (NSAssertionException)가 발생합니다
주장
@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)));
}
이러한 어설 션을 수행하면 예외가 발생하면 삼각형 각도가 잘못 부여되지 않습니다. 삼각형보다 예외를 던지지 않고 진정한 삼각형이 아닌 경우 나중에 코드에서 버그가 발생할 수 있습니다.
try catch 블록을 사용한 에러 및 예외 처리
예외는 존재하지 않는 배열 요소에 액세스하려는 것과 같은 프로그래머 수준의 버그를 나타냅니다.
오류는 존재하지 않는 파일을로드하는 것과 같은 사용자 수준의 문제입니다. 프로그램의 정상적인 실행 중에 오류가 예상되기 때문입니다.
예:
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]
최종 블록 실행 중
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow