2009-11-27 2 views
1

누군가 디자인/레이아웃 질문에 도움이 될지 궁금합니다. 실행을 멈추고 오류를 반환하려는 코드의 한 지점에 오면 어떻게 정리를해야합니까? 제가 여기서했던 것처럼 코드를 복제합니까, 아니면 다른 방법입니까? 게리오류 종료 후 정리?

답변

3

if(fileContents == nil) { 
     NSLog(@"ReadError: %@", [fileError localizedDescription]); 
     [pool drain]; 
     return 1; 
    } else { 
     NSLog(@"Success : %@", fileContents); 
    } 

    // Clean up 
    [pool drain]; 
    return 0; 
} 
// END 

정확하게 사건의 경우는 "결과"라는 이름의 변수를 도입하는 것이 더 쉽습니다.

int result = 0; 
    if(fileContents == nil) { 
     NSLog(@"ReadError: %@", [fileError localizedDescription]); 
     result= 1; 
    } else { 
     NSLog(@"Success : %@", fileContents); 
    } 

    // Clean up 
    [pool drain]; 
    return result; 
} 
// END 
0

저는 RocketSurgeon과 비슷한 접근 방식을 사용하고 있습니다. 단, 실행중인 "everything is ok"플래그로 사용합니다. 그렇게하면 언제든지 okfalse으로 설정하고 추가 코드를 건너 뛰어도 끝 부분에 모든 관련 정리 (그림과 같이 C가 포함됨)가 유지됩니다.

bool ok = true; 
type *someptr = 0; 

if (ok) 
{ 
    if ((someptr = (type *)malloc(...)) == NULL) 
    { 
     // report error 
     ok = false; 
    } 
} 
if (ok) 
{ 
    if(fileContents == nil) 
    { 
     NSLog(@"ReadError: %@", [fileError localizedDescription]); 
     ok = false; 
    } 
    else 
    { 
     NSLog(@"Success : %@", fileContents); 
    } 
} 

// Clean up 
if (someptr) 
    free(someptr); 
[pool drain]; 
return ok; 
+0

확실한 방법은 성공하면 0 (성공) 또는 0 (오류)이 아닌 main()으로 1을 반환하는 것입니다. – fuzzygoat

+0

아니요, 이것은 간단한 예일뿐입니다. 일반적으로 유용한 오류 코드를 반환하거나 "return ok? 0 : 1"을 수행하려고합니다. – Tom