- ベストアンサー
Java FTPクライアントのプログラムにおけるExceptionの詳細な内容について
- Java FTPクライアントのプログラムで発生するExceptionの詳細な内容について教えてください
- EclipseでJava FTPクライアントのプログラムを実行した際、catch( Exception ie3 )が到達不可能なブロックと表示されました。このExceptionの詳細について教えてください
- Java FTPクライアントのプログラムのdoQuitメソッド内で発生するExceptionの詳細な内容について教えてください
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> 通信上の不具合が起こったときにPrintWriter のprintln(), flush() > が正しく動作しない場合というのは起こりうるのでしょうか? 質問文中のctrlOutputとctrlSocketの間がどのように結びつけられているのかが分かりませんが、通信上の不具合が発生したらprintln()やflush()は意図したとおりには動かない可能性が高いでしょう。その場合でもdoQuit()メソッドでIOExceptionをキャッチすることはありませんが。 > Socketを用いて通信が確立されるとサーバー側から通信は > 遮断されないものなのでしょうか? 通信は様々な理由で遮断される可能性があります。 通信が切れたことをdoQuit()で検知したいのだろうと推測しますが、その場合は下記のような方法が考えられます。 ・PrintWriterクラスのcheckError()メソッドを使う ・PrintWriterクラスを使わず、もっと低レベルの処理を自前で行う
その他の回答 (2)
- salsberry
- ベストアンサー率69% (495/711)
> この場合において、catch ブロックで捕捉可能なサブクラス PrintWriterのprintln()やflush()にはthrows宣言がなく、文法上これらのメソッドがExceptionを発生する可能性があるとすれば非チェック例外だけです。具体的にはRuntimeExceptionおよびそのサブクラス(NullPointerExceptionやArithmeticExceptionなど)です。 PrintWriterの仕様書には書かれていないのでprintln()やflush()が非チェック例外を発生することはまずないと思いますが。 やる意味があるかどうかを別にすると、自分でPrintWriterのサブクラスを作ってprintln()をオーバーライドすれば、その中で非チェック例外を発生することは可能です。
お礼
お礼が遅れてしまい申しわけありません。 ですが丁寧に解説していただきありがとうございます。 ついでといっては失礼かもしれませんが 通信上の不具合が起こったときにPrintWriter のprintln(), flush() が正しく動作しない場合というのは起こりうるのでしょうか? FTPサーバー (この場合はクライアントを実行しているパソコンに設定してますが) との通信が途切れる、といった場合Javaの例外は 発生するものなのでしょうか? あるいはSocketを用いて通信が確立されるとサーバー側から通信は 遮断されないものなのでしょうか? 少し長くなりましたがもしよければ 教えていただけないでしょうか? よろしくお願いします。
- salsberry
- ベストアンサー率69% (495/711)
PrintWriterのprintln()やflush()はIOExceptionをthrowすることがありません(PrintWriterクラスの仕様を参照のこと)。したがってcatch( IOException ie3 )と書いてもそのcatchブロックが実行されることは絶対にないということです。catch( Exception ie3 )だったら実行される可能性があり得ます。
お礼
さっそく回答していただきありがとうございます。 もしよろしければもう少し詳しく教えていただけないでしょうか? Exception のサブクラスである, この場合において、catch ブロックで捕捉可能な サブクラスの名前を教えていただけないでしょうか? よろしくお願いします。 とにかく、貴重な時間をさいての回答、ありがとうございました。
お礼
お礼が遅れてしまい申しわけありません。 また質問させていただくことがありましたら、 よろしくおねがいします。 貴重な時間をさいての回答、ありがとうございました。