는 목표 - C에서 NSAssertion
는 당신 때문이 아니라 잘못된 인수 또는 예기치 않은 조건, 코드에서 실수를했기 때문에 단지 실패 할 경우 하나의 코드 주장에 만든 더블 체크 가정에 사용됩니다.
NSException
이 유효 인자 같은 것들을 사용 등 때문에 더 잘 맞는 당신이 무슨 말을하는지에 대한 것입니다 (하지만 테스트의 외부는 @catch
NSException
표준 방법이 아닙니다 그리고 실행을 계속한다 : 당신은 그냥 할 대신 것 종료 전에 오류보고).
상황에 따라 NSException
을 사용하는 방법은 다음과 같습니다. 다음과 같이 첫째, someMethod:
을 변경
- (void) someMethod:(NSString*)param {
if (param == @"0") {
[NSException raise:@"Invalid param value" format:@"param of 0 is invalid"];
}
// more code
}
을 그런 다음 호출 할 때 귀하의 의견, 나는 당신이 @catch
블록에 플래그의 어떤 종류를 설정할 것 같아요과 경우를 기반으로 someMethod:
@try {
[yourObject someMethod:@"0"];
}
@catch (NSException *exception) {
NSLog(@"main: Caught %@: %@", [exception name], [exception reason]);
}
@finally {
//any code that should be executed whether or not the exception is raised
}
플래그가 설정되지 않은 경우 (즉, 예외가 발생하지 않은 경우) 종료됩니다.
P. 정규 프로그램 실행 (테스팅과 반대) 중에 오류에 반응하기를 원할 때, NSError
은 더 관용적입니다.
감사합니다. NSException과 "@try @catch @finally"의 조합은 작업을 멋지게 처리합니다. –