스레드를 x 초 동안 일시 중지하고 파일을 다시 읽음으로써 FileNotFoundException
을 Java에서 처리하려고합니다. 이 배후의 아이디어는 런타임 중에 속성을 편집하는 것입니다.자바에서 속성 파일 열기를 다시 시도하는 방법
문제는 단순히 프로그램이 종료된다는 것입니다. 이 솔루션을 어떻게 실현할 수 있는지 생각해보십시오.
스레드를 x 초 동안 일시 중지하고 파일을 다시 읽음으로써 FileNotFoundException
을 Java에서 처리하려고합니다. 이 배후의 아이디어는 런타임 중에 속성을 편집하는 것입니다.자바에서 속성 파일 열기를 다시 시도하는 방법
문제는 단순히 프로그램이 종료된다는 것입니다. 이 솔루션을 어떻게 실현할 수 있는지 생각해보십시오.
파일을 루프로로드하고 파일을 성공적으로 읽은 후 조건이 종속 된 변수를 설정하십시오. 루프 내에서 try-catch 블록을 사용하고 catch 블록에서 대기하십시오.
예외가 발견되지 않으면 스레드가 종료됩니다. 이것이 당신의 주 스레드라면, 응용 프로그램이 종료됩니다. 다음을 시도해보십시오 :
좋은 된 자바 여기에 포팅 원래 C++에 대한 비얀 Stroustroup에 의해 요리법,있다try
{
props.load(...);
}
catch (FileNotFoundException ex)
{
Thread.sleep(x * 1000);
props.load(...);
}
이 한 번만 다시 시도합니다, 내가 제대로 이해한다면, 아이디어가 다시 시도하는 것입니다 성공할 때까지. –
예, 답안에서 제공 한 루프가 더 나은 솔루션입니다. 내 대답은 기본적으로 질문에 대한 답변입니다. – Mnementh
:
Result tryOpenFile(File f) {
while (true) {
try {
// try to open the file
return result; // or break
} catch (FileNotFoundException e) {
// try to recover, wait, whatever
}
}
}
'return result'는'void' 타입의 메소드에는 유효하지 않습니다. –
이것은 의사 코드이며, 아직 교정되었습니다. –
일부 코드 조각이 유용 할 수 있지만 다음 중 하나를 수 문제가 될 :
이catch (Exception e)
으로 임시 포장하여 어떤 예외가 발생하는지 확인하십시오.행운
요아킴은이 체크 나는 내 머리를 받아야합니다 :) 그리 명확 트릭을 할해야
덕분에 ... – Hoggy