2012-01-24 3 views
4

FileWriterFileOutputStream에 대한 Java 7의 문서에 따르면 FileWriter의 생성자는 IOException을 던지고 FileOutputStream의 생성자는 FileNotFoundException을 발생시킵니다.왜 FileWriter와 FileOutputStream에 대한 예외가 다른가요?

두 예외에 대한 이유는 동일합니다. "파일이 있지만 일반 파일이 아닌 디렉토리 인 경우 존재하지 않지만 생성 할 수 없거나 다른 이유로 열 수없는 경우"

이 경우 특수 예외가 필요한 이유는 무엇입니까? FileWriter에 대한 일반적인 예외는 Java 제작자가 결정합니다.

답변

4
  1. FileWriterOutputStreamWriter은 그 생성자 UnsupportedEncodingException을 발생 연장된다.
  2. FileWriter의 구현을 보면 FileNotFoundException을 던지는 FileOutputStream을 사용합니다. FileWriter 생성자는 이제 이러한 예외 중 하나를 던질 수

때문에, 모두 예외에 대한 공통의 슈퍼 클래스 인 IOException을 던져 선언된다.

+0

FileReader는 InputStreamReader를 확장하지만, 생성자는 UnsupportedCharsetException를 throw 할 수 있습니다 만, FileReader constructor은 FileNotFoundException (FileReader constructor은 FileNotFoundException만을 throw하는 FileInputStream 생성자를 호출합니다)만을 throw합니다 (이 클래스는 개별의 예외를 throw하도록 선언되었을 가능성이 있습니다). –