2010-04-26 3 views
2

스레드를 x 초 동안 일시 중지하고 파일을 다시 읽음으로써 FileNotFoundException을 Java에서 처리하려고합니다. 이 배후의 아이디어는 런타임 중에 속성을 편집하는 것입니다.자바에서 속성 파일 열기를 다시 시도하는 방법

문제는 단순히 프로그램이 종료된다는 것입니다. 이 솔루션을 어떻게 실현할 수 있는지 생각해보십시오.

답변

1

파일을 루프로로드하고 파일을 성공적으로 읽은 후 조건이 종속 된 변수를 설정하십시오. 루프 내에서 try-catch 블록을 사용하고 catch 블록에서 대기하십시오.

+0

덕분에 ... – Hoggy

-2

예외가 발견되지 않으면 스레드가 종료됩니다. 이것이 당신의 주 스레드라면, 응용 프로그램이 종료됩니다. 다음을 시도해보십시오 :

좋은 된 자바 여기에 포팅 원래 C++에 대한 비얀 Stroustroup에 의해 요리법,있다
try 
{ 
    props.load(...); 
} 
catch (FileNotFoundException ex) 
{ 
    Thread.sleep(x * 1000); 
    props.load(...); 
} 
+0

이 한 번만 다시 시도합니다, 내가 제대로 이해한다면, 아이디어가 다시 시도하는 것입니다 성공할 때까지. –

+0

예, 답안에서 제공 한 루프가 더 나은 솔루션입니다. 내 대답은 기본적으로 질문에 대한 답변입니다. – Mnementh

3

:

Result tryOpenFile(File f) { 
    while (true) { 
    try { 
     // try to open the file 
     return result; // or break 
    } catch (FileNotFoundException e) { 
     // try to recover, wait, whatever 
    } 
    } 
} 
+0

'return result'는'void' 타입의 메소드에는 유효하지 않습니다. –

+0

이것은 의사 코드이며, 아직 교정되었습니다. –

0

일부 코드 조각이 유용 할 수 있지만 다음 중 하나를 수 문제가 될 :

  • 에 코드를 성공적으로 첫 FileNotFoundException이 잡는다하지만 코드를 깨어 난 후 성공적으로 처리하지 않는 두 번째
  • 처리되지 않는 또 다른 예외가 발생합니다. 문제가되는 코드를 catch (Exception e)으로 임시 포장하여 어떤 예외가 발생하는지 확인하십시오.
  • 파일을 편집하는 데 사용하는 프로그램은 등록 정보 파일을 '잠그고'Java 코드에 의한 액세스를 금지합니다.

행운

요아킴은이 체크 나는 내 머리를 받아야합니다 :) 그리 명확 트릭을 할해야
관련 문제