質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

2540閲覧

jspでexceptionオブジェクトの例外を区別する方法

fallere_

総合スコア1

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/05/16 18:16

プログラミングを学び始めて日が浅い初心者です。

jspでexceptionオブジェクトを使いエラーを別ファイルにthrowする場合、errorPage=“ファイル名”を記載しておくと思います。

この際にthrowされたファイル先で「getMessage()」で得られるエラー内容によって表示を変えるためにはどうすればいいのでしょうか。

例えば数字(1など)入力するtextに対して「A(文字)」を入力した場合、「1.0(小数)」を入力した場合でエラー表記を変えたいです。

ifを使えばいいのかと思ったのですが、get MessageはStringやintの方では無いと思うので、どうやって区別すればいいのか困っています。

throwする側についてはparseIntなどでエラーにしようと考えています。throwされた先でどのようにifを使いわければいいのかご教示いただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/05/16 22:09

viewにはexception起きない状態で情報渡せば良いのでは?どうしても書きたいのはどういう経緯からでしょうか。 あまりview側にロジックを書くべきではないと思います。
fallere_

2020/05/17 03:26

解答ありがとうございます。 質問の趣旨と異なる解答はご遠慮願います。
guest

回答1

0

ベストアンサー

定石としては、依頼欄で指摘されているように、例外を発生させずに入力に対するエラーチェック処理を書くことだと思います。

どうしても例外で書きたいのなら、例外を発生させるparseInt()をラップして、独自例外なり、メッセージを指定した例外なりを投げるようにするほうが良いでしょう。

jspだけでやりたいのなら、例外発生個所をtry-catchで囲んで、エラーメッセージを作成するほうが、まだ、ましです。

それもいやで、何が何でもerropageで分岐してメッセージを変えたいのならば、渡されたexeptionを、想定される例外毎にクラス判定で分岐して処理になるでしょうか。
ただ、Exception#getMessage()のメッセージは、ロケールなど、様々な条件で変わりますし、例外発生時の変数などは一切持っていませんので、例に挙げた分岐を行いたいのなら、元のページで例外を補足するなどして、その辺りの情報をsessionなどに格納する必要があります。
その上で、errorpageでは、例外クラスごとの分岐と入力値をなどの変数の解析と分岐が必要です。

以上の説明は、ご理解いただけるでしょうか?

正直、最後の方法は、かなり無茶なコーディングに慣れた人でないとできないと思いますので、1年くらい勉強してから、再度、挑んでみるくらいの課題かと思います。
現在のご自分のやり方に固執せず、色々なコーディング経験を積まれるほうが有意義かと思います。
javaやjspをきちんと理解できたという自信ができてから、挑み直してみてください。
多分、その頃には、無駄で面倒な方法であることが理解できると思います。

ちなみに、ExceptionクラスのgetMessage()で返されるのは、Stringですよ。値が保証されないので、解析も無理ですが。

投稿2020/05/17 04:56

YT0014

総合スコア1708

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fallere_

2020/05/17 08:22

ご解答ありがとうございます。おかげで問題を解決することが出来ました。結果的にtry-catchを使って解決することが出来ました。Exceptionのエラー区別については、sessionのsetAttributeとgetAtreibuteを使って、Parameterとif文で区別させました。
YT0014

2020/05/17 09:20

解決できたようで何よりです。 ただ、きちんと考えて作成しないと、用途によっては、errorpageにエラーが発生してエラーが表示されない、という状態があり得ますが、大丈夫でしょうか? erropageの使い方の学習などなら良いのですが、公開ページなどの場合、sessionに値がなかったり、他のjspから呼ばれたり、思いがけない例外で呼ばれたりする可能性がありますが、考慮されていますでしょうか? 余分な指摘かとは思いますが、付け加えさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問