2012-09-14 9 views

답변

5

종종 std out 또는 err에 쓰는 PrintStream의 경우 이러한 스트림이 닫혔거나 삭제되었을 수 있지만 결과적으로 프로그램이 예기치 않게 실패하는 것을 원하지는 않습니다.

PrintWriter는 여러면에서 PrintStream의 Writer 버전입니다. PrintStream의 실수를 반복하는 것이 좋은 생각인지는 잘 모르겠지만. ;)

사실 PrintWriter가 IOException을보고하지 않는다는 사실은 연결에 실패했음을 종종 알아야하는 Socket에 텍스트를 쓰는 데 좋지 않은 선택입니다.

1

주로 System.err이 PrintStream이기 때문에 생각합니다.

catch 블록에서 예외를 처리 할 때 e.printStackTrace()를 호출하는 것이 일반적이며 System.err에 씁니다. 이 호출이 예외를 던지면 원래 예외가 없어지고 대신 코드에서 PrintStream 오류가 발생합니다. 그런 다음 문제를 방지하기 위해 catch 블록 안에 try/catch를 추가로 설치해야합니다.

JDK 1.7은 catch 블록에서 예외를 throw하는 문제를 해결하고 두 예외를 모두 액세스 할 수 있습니다.