1
NSLogv에 대한 간단한 래퍼가 있습니다. 형식 문자열에 너무 많은 자리 표시자가있는 경우 예외를 throw하는 것을 제외하고는 정상적으로 작동합니다. 그 예외를 잡으려고하지만이 @try
블록이 작동하지 않습니다. 왜?@try가 EXC_I386_GPFLT를 잡지 못합니까?
[[MYLogger error:@"%@ %@", value];
NSLogv에 대한 간단한 래퍼가 있습니다. 형식 문자열에 너무 많은 자리 표시자가있는 경우 예외를 throw하는 것을 제외하고는 정상적으로 작동합니다. 그 예외를 잡으려고하지만이 @try
블록이 작동하지 않습니다. 왜?@try가 EXC_I386_GPFLT를 잡지 못합니까?
[[MYLogger error:@"%@ %@", value];
@try 예외를 캐치 : 여기
- (void)error:(NSString *)formatString, ...;
{
@try {
va_list arglist;
va_start(arglist, formatString);
formatString = [NSString stringWithFormat:@"ERROR: %@", formatString];
NSLogv(formatString, arglist);
va_end(arglist);
}
@catch (NSException *exception) {
// Handle exception ...
}
}
예외가 발생하는 예이다. 당신은 신호를 잡으려고합니다.
제 조언 : 시도조차하지 마십시오.
같은 문제가 있습니다. 하드웨어 장치에는 문제가 없지만 시뮬레이터에서 테스트 할 때이 문제가 발생합니다. 모든 업데이트? – 4ntoine
예외를 잡는 이유는 무엇입니까? 프로그래머가 버그이기 때문에 충돌을 원합니다. 개발 및 테스트에서 문제를 찾아 수정하십시오. – rmaddy
Objective-C에서'@ try'는 예외가 발생했을 때 "정상적으로 실패"하는 데에만 사용해야합니다. 자바 예외처럼 자연스럽게 사용되도록 의도되지 않았습니다. –
이 예외를 잡는 것은 최종 방어선입니다. 자리 표시 자의 수가 잘못 설정된 오류 로그 문 때문에 앱이 다운되는 것을 원하지 않습니다. –