OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

例外が発生した時にブラウザにメッセージを表示

  • すぐに回答を!
  • 質問No.224791
  • 閲覧数356
  • ありがとう数2
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 40% (2/5)

Servletで、db検索しその結果をブラウザに表示しています。
SQLExceptionや、NULLPointerExceptionが発生した時に、
今は、
catch(Exception e){
e.printStackTrace();
}
としているのでログにエラーを書き出しているだけで、画面にはなにも表示されません。
エラーの時も、PrintWriter pw = response.getWriter();で
pw.println("<HTML><HEAD></HEAD>");
pw.println("<body><h1>");
pw.println("エラー発生!");
pw.println("</h1></body></html>");
というふうにブラウザに出力したいのです。
catchブロックの中にはどのように、記述したらいいのでしょうか?

ひとつのクラス内で以上の事がしたいのですが、そもそもそれも
無理なのでしょうか?
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全3件)

  • 回答No.1
レベル14

ベストアンサー率 50% (1122/2211)

スタックトレースをブラウザに表示したいということでしょうか? Exception クラスがもつ printStackTrace() は三種類の引数指定ができます。 そのうちのひとつは PrintWriter クラスを受け付けるので、   catch(Exception e){     PrintWriter pw = response.getWriter();      ...    ...続きを読む
スタックトレースをブラウザに表示したいということでしょうか?

Exception クラスがもつ printStackTrace() は三種類の引数指定ができます。
そのうちのひとつは PrintWriter クラスを受け付けるので、

  catch(Exception e){
    PrintWriter pw = response.getWriter();
     ...
    e.printStackTrace(pw);
     ...
  }

というような使い方が可能です。タグを省略してますが、必要なものは前後で出力してください。
お礼コメント
feb2

お礼率 40% (2/5)

どうもありがとうございました。
うまくいきました。
だた、tryブロック内でpw.printlnでHTMLを編集中に
エラーが発生した場合、その途中までのHTMLと
catchブロック内で作成したHTMLが繋がってしまうので、
ブラウザには、正しい画面もエラー画面も表示されませんでした。
PrintWriterをflushしても、効果がありません。
catchブロック内で、いままでのPrintWriterを無効にする事は
不可能なんでしょうか?
投稿日時 - 2002-02-28 17:38:05


  • 回答No.2
レベル14

ベストアンサー率 50% (1122/2211)

> catchブロック内で、いままでのPrintWriterを無効にする事は > 不可能なんでしょうか? 既に出力されちゃった内容ですからね。 そこまできれいにやりたければ、出力内容は文字列に貯め(StringWriterを使っても良い)て、 最後(例えば、finallyブロック)にまとめて出力する、なんて方法もあります。
> catchブロック内で、いままでのPrintWriterを無効にする事は
> 不可能なんでしょうか?

既に出力されちゃった内容ですからね。

そこまできれいにやりたければ、出力内容は文字列に貯め(StringWriterを使っても良い)て、
最後(例えば、finallyブロック)にまとめて出力する、なんて方法もあります。
  • 回答No.3
レベル7

ベストアンサー率 71% (5/7)

 表示したいエラーページのHTMLを出力する文をcatch節に設定すればそれが出力されます。 すでに出力してしまっている内容がある場合は、HTTPServletResponse#reset()でそれをクリアできます。 以下の例では、パラメータにresetを付ければエラーページのみが出力され、 resetを付けなければ途中まで書き出された正常なページの下にエラーページがつながって出力されます。 ...続きを読む
 表示したいエラーページのHTMLを出力する文をcatch節に設定すればそれが出力されます。
すでに出力してしまっている内容がある場合は、HTTPServletResponse#reset()でそれをクリアできます。
以下の例では、パラメータにresetを付ければエラーページのみが出力され、
resetを付けなければ途中まで書き出された正常なページの下にエラーページがつながって出力されます。

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class exceptionpage extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res) {

boolean ResetFlag = false;
PrintWriter PW;
int i[] = new int[10];

try {

if (req.getParameter("reset") != null) ResetFlag = true;

res.setContentType("text/html");
try { PW = res.getWriter(); } catch (Exception ex) { return; };

PW.println("<html><head><title>Valid Page</title></head>");
PW.println("<body>");
PW.println("<h1>ValidData</h1>");

i[10] = 10;

PW.println("</body></html>");

} catch (Exception ex) {

if (ResetFlag) res.reset();

try { PW = res.getWriter(); } catch (Exception exx) { return; };
PW.println("<html><head><title>Error Page</title></head>");
PW.println("<body>");
PW.println("<h1>Error Occurred</h1><br>");
PW.println(ex.toString() + "<br>");
PW.println("</body></html>");

};

};

}
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ