dポイントプレゼントキャンペーン実施中!

次のようなクラスを作成したのですが、表題のようなエラーが出てしまいます。
PrintWriterクラスのcloseメソッドは、
Closableインターフェースのcloseと
witerクラスのcloseと同じ定義だと考えていたので、きっとIOExceptionが発生すると考えていたのですが・・・違うのでしょうか?
Finallyの中にtryを書くと何か問題が起こるのでしょうか?
ソースをそのまま書くのは気が引けるのですが、どうか教えて頂けないでしょうか?
/**
* ファイルに文字を書き込むクラス
*/
class Sample
{
PrintWriter writer; //書き込むためのクラス

public void writerTest()
{
try
{
//** テストファイルに書き込み */
writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream("sample.txt",false),"EUC-JP")));
//書き込みを行います
writer.println("A");
writer.flush();
}
catch(IOException ioe)
{
System.out.println(ioe.getMessage());
}
finally
{
try
{
writer.close();
}
catch(IOException ioe) //このcatchでエラーが発生します。
{
System.out.println(ioe.getMessage());
}
}
}
}

A 回答 (2件)

こんばんは。


PrintWriterクラスのclose()メソッドはIOExceptionをスローしません。
APIガイドを調べるのが一番の近道かと思います。
Writerクラスのclose()抽象メソッドの実装ですが、例外は無視してるみたいですね。

> Finallyの中にtryを書くと何か問題が起こるのでしょうか?
問題ありません。正しいクローズ処理です。

参考URL:http://java.sun.com/j2se/1.4/ja/docs/ja/api/java …
    • good
    • 0
この回答へのお礼

お返事が送れてごめんなさい。

ソースまで確認して、やっと納得がいきました。
少しはJavaの調べ方が解ってきたと思います。
ありがとうございました。

お礼日時:2006/10/31 09:49

ANo.1の付けたしです。


> > Finallyの中にtryを書くと何か問題が起こるのでしょうか?
> 問題ありません。正しいクローズ処理です。
↑close()メソッドが例外をスローする場合は正しい処理です。
PrintWriterクラスの場合は例外をスローしないので正しくありません。
    • good
    • 1
この回答へのお礼

例えば、BufferedWriterの場合には正しいという事ですね。
ちゃんとソースを確認して、納得がいきました。
本当にありがとうございました。

お礼日時:2006/10/31 09:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!