2012-07-06 2 views
0

이것은 스타일과 질의를위한 질문에 더 가깝지만이 문제에 대한 의견이 궁금합니다. 다음 코드를 고려 (그리고 나는이 문제를 피하기 위해 다른 기능을 사용할 수 있다는 것을 무시) : 예외시 스트림 닫기 - 예외가 발생할 수있는 위치를 확인하려면 확인 하시겠습니까?

FileUtils.copyInputStreamToFile(new FileInputStream(f1), f2); 

copyInputStreamToFile

이 apache.commons.io에서하고 스트림을 닫습니다. 나는 어떤 일반적인 상황에서 InputStream을 닫아야 만한다. 왜냐하면 InputStream을 생성 할 때 예외가 발생하면 아무 것도 닫히지 않기 때문이다. 그리고 어떤 경우에 copyInputStreamToFile이 발생하면이 함수는 나를 위해 스트림을 닫을 것이다.

그러나 InputStream 작성과 try 블록 시작 사이에 예외 또는 오류가 없다고 가정하는 것이 안전합니까? copyInputStreamToFile? 나는 또는 ThreadDeath과 같은 이상한 것을 생각하고 있습니다. 위의 코드를 다음과 같이 다시 작성할 수 있습니다.

InputStream is = null; 
try { 
    is = new FileInputStream(f1); 
    FileUtils.copyInputStreamToFile(is, f2); 
} finally { 
    IOUtils.closeQuietly(is); 
} 

안전해야하지만 필요하다고 생각합니까?

+1

'ThreadDeath'에 대한 해결책이 없으며 OOME은 파란색으로 나오지 않습니다. 메모리 할당을 요청하는 코드에서만 발생할 수 있습니다. –

답변

0

응용 프로그램이 동시 실행 중인지 여부에 달려 있다고 생각합니다. 그렇다면 입력 스트림본문 사이에 copyInputStreamToFile이 실행되지 않는다고 가정 할 수 없습니다.

Marko Topolnik은 응용 프로그램이 동시 적이 지 않은 경우에 답변합니다.

관련 문제