programing

@try - 목표 C의 캐치 블록

minimums 2023. 4. 23. 10:10
반응형

@try - 목표 C의 캐치 블록

왜 @try block이 작동하지 않는 거죠?앱이 크래쉬가 되었지만 @try 블록에 잡혔습니다.

 NSString* test = [NSString stringWithString:@"ss"];

 @try {
    [test characterAtIndex:6];

 }
 @catch (NSException * e) {
    NSLog(@"Exception: %@", e);
 }
 @finally {
    NSLog(@"finally");
 }

모두 완벽하게 동작:)

 NSString *test = @"test";
 unichar a;
 int index = 5;
    
 @try {
    a = [test characterAtIndex:index];
 }
 @catch (NSException *exception) {
    NSLog(@"%@", exception.reason);
    NSLog(@"Char at index %d cannot be found", index);
    NSLog(@"Max index is: %lu", [test length] - 1);
 }
 @finally {
    NSLog(@"Finally condition");
 }

로그:

[_NSCFConstString 문자 At]색인::범위 또는 인덱스가 범위를 벗어남

색인 5의 문자를 찾을 수 없습니다.

최대 인덱스: 3

최종 조건

이제 문제를 발견했어요.

의 삭제obj_exception_throw이 문제를 해결했어요.이제 그것은 에 의해 잡힌다.@try블록 및NSSetUncaughtExceptionHandler이 문제는 만약@try블록이 없습니다.

Objective-C는 Java가 아닙니다.Objective-C에서는 예외라고 부릅니다.예외!오류 처리에는 사용하지 마십시오.그들의 제안이 아닙니다.characterAt를 사용하기 전에 문자열 길이를 확인하십시오.색인 및 모든 것이 정상...

언급URL : https://stackoverflow.com/questions/3363612/try-catch-block-in-objective-c

반응형