2012-09-13 5 views
-1
while (true) { 
    try { 
     //create ImportantObject 
     LoopToGoTo: 
     for (int i = 0; i < Limit; i++) { 
      //method in here throws the exception 
      //ImportantObject is used in here. 
     } 
    } catch(Exception e) { 
     //report error 
     continue LoopToGoTo; 
    } 
} 

try catch 블록 안에있는 루프에서 계속하고 싶습니다. 이것이 가능한가?'continue with label'을 사용하여 내부 for 루프에 도달하십시오.

편집 : 죄송 합니다만, 왜 try catch를 for 루프 내부로 옮길 수 없었는지 명확하지 않았습니다. (편집 된 스 니펫) try-catch를 for 루프 안에 넣으면 내부의 호출이 ImportantObject에 액세스 할 수 없게됩니다. 이것이 내가 붙어있는 곳입니다.

EDIT2 : 좋아요, 그래도 라벨을 계속 사용하지 않아도 문제가 해결되었습니다. 내 질문에 대한 대답은 단순한 '아니오'라고 생각합니다. 나쁜 습관이 온통 있을지 모르지만, 2 시간 안에 임무가 끝납니다. 내가 무엇을 말할 수 있습니까? D

//ImportantClass ImportantObject = null; 
while (!ranOnce) { 
    try { 
     //create ImportantObject 
     ranOnce = true; 
    } catch(Exception e) { 
     //report error 
     continue; 
    } 
} 
for (int i = 0; i < Limit; i++) { 
    try { 
     //method in here throws the exception 
     //ImportantObject is used in here. 
    } catch(Exception e) { 
     //report error 
     continue; 
    } 
} 
+1

아무 것도 할 필요가 없으며 for 루프가 계속됩니다. –

+0

"try-catch를 for 루프 안에 넣으면 내부의 호출이 ImportantObject에 액세스 할 수 없게됩니다. 여기가 내가 고생 한 곳입니다." - 이해가 안되요 - ImportantObject를 만들고 for 루프를 입력 한 다음 try 루프를 입력하십시오 - 작동하지 않습니까? –

답변

2

아니요, 이미 try 블록의 범위를 벗어 났으므로 불가능합니다.

for 루프 내부에서 try catch를 이동하지 않는 이유는 무엇입니까?

for (int i = 0; i < Limit; i++) { 
    try { 
     //method in here throws the exception 
    } 
    catch(Exception e) { 
    //report error 
    } 
} 
+0

이것은 기본적으로 제가 한 일입니다. – James

1

이 작업을 수행 하시겠습니까?

0

간단하다고 생각하면 continue;은 달성하려는 효과가 동일합니다.