아이폰 기반 앱을 만들고 있는데 예외를 잡는 데 문제가 있습니다.문제 잡기 문제
- (void)updateView:(NSTimer*)t {
NSMutableDictionary *requestResult = [[[NSMutableDictionary alloc] init] autorelease];
@try {
requestResult = [self.eqParam getParameters];
}
@catch (MMConnectionFailed * e) {
[self performSelectorOnMainThread:@selector(noConnection) withObject:@"Could not reach server." waitUntilDone:YES];
}
}
낮은 쪽의 방법이 아니라 예외를 던져 : D 여기
가 예외를 캐치하지 않았던 코드입니다 : 지금까지, 나는 음 ... 시도 어획량에 문제가 없었다 그러나 여기 없어요 디버그 모드에서 예외가 발생했을 때이 방법이 사용되면 아무 것도 잡히지 않습니다.단서가 있습니까?
UPDATE : 문제가했지만 예외가 낮은 레버를 던져되지 않은 이유를 난 아직도 모르는 경우 마지막으로, 내가 발견
. 내 getParameters
메소드의 끝을 변경했습니다. 여기 :
- (NSMutableDictionary *)getParameters {
@try {
// be careful with NSMutableDictionary. Has to be used with setters to be correctly affected
lastResponse = [MMSoapMethods getEquipmentParametersWithUserString:user equipmentId:equipmentId];
}
@catch (MMConnectionFailed * e) {
@throw e;
}
@finally {
if (self.lastResponse) {
return lastResponse;
}
else
return nil;
}
}
난 주위에 @finally
주변 태그가 삭제되었으며 예외가 발생했습니다. 이상하지?
질문에 Objective-C 태그를 추가 할 수도 있습니다. 가능성이 잘못된 유형의 예외를 catch하거나 try-section의 코드에서 예외가 발생하지 않습니다. – Nubsis