LoginSignup
0
0

More than 5 years have passed since last update.

responseへのダウンロード処理でエラー画面を表示する

Last updated at Posted at 2019-02-16

この記事の概要

javaでファイルダウンロード機能を実装した際にエラーハンドリングで苦労した点を記載する。

 [要点]
 出力ストリームを自動クローズしない
 正常終了時のみクローズする
 キャッチ文でresponseをresetし、クローズしない

環境

OS:Windows8.1 32bit
eclipse:4.5.2

エラー画面を表示できないソース

元々のソースではtry-catch-resouses文やfinally句の中でclose処理を記載していた。


  try {
    // ダウンロード対象ファイルの入力ストリームを取得
        // responseから出力ストリームを取得
    // 入力ストリームから出力ストリームへ書き込みを行う
  } catch(Exception e) {
    // 例外処理
  } finally {
    // クローズ処理
  }

}

このソースでは正常終了する際には問題が無いが、例外発生時にもresponseのクローズ処理をしてしまうため、クライアント側から見て正常でないファイルをダウンロードしてしまうようになっていた。

そのため下記のように修正を行う。

エラー画面を表示するソース


  try {
    // ダウンロード対象ファイルの入力ストリームを取得
        // responseから出力ストリームを取得
    // 入力ストリームから出力ストリームへ書き込みを行う
    // 正常終了時のみクローズ処理
  } catch(Exception e) {
        // responseのreset処理
    // 例外処理
  } 

}

これで正常終了時のみダウンロードされ、例外発生時はエラー画面を表示できる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0