이것은 스타일과 질의를위한 질문에 더 가깝지만이 문제에 대한 의견이 궁금합니다. 다음 코드를 고려 (그리고 나는이 문제를 피하기 위해 다른 기능을 사용할 수 있다는 것을 무시) : 예외시 스트림 닫기 - 예외가 발생할 수있는 위치를 확인하려면 확인 하시겠습니까?
FileUtils.copyInputStreamToFile(new FileInputStream(f1), f2);
copyInputStreamToFile
InputStream
을 생성 할 때 예외가 발생하면 아무 것도 닫히지 않기 때문이다. 그리고 어떤 경우에
copyInputStreamToFile
이 발생하면이 함수는 나를 위해 스트림을 닫을 것이다.
그러나 InputStream
작성과 try 블록 시작 사이에 예외 또는 오류가 없다고 가정하는 것이 안전합니까? copyInputStreamToFile
? 나는 또는 ThreadDeath
과 같은 이상한 것을 생각하고 있습니다. 위의 코드를 다음과 같이 다시 작성할 수 있습니다.
InputStream is = null;
try {
is = new FileInputStream(f1);
FileUtils.copyInputStreamToFile(is, f2);
} finally {
IOUtils.closeQuietly(is);
}
안전해야하지만 필요하다고 생각합니까?
'ThreadDeath'에 대한 해결책이 없으며 OOME은 파란색으로 나오지 않습니다. 메모리 할당을 요청하는 코드에서만 발생할 수 있습니다. –