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

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

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

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

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

3回答

4949閲覧

【Java】サーブレットに書かれているreturnについて

natsunowakusei

総合スコア17

Java

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

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2019/02/07 08:49

編集2019/02/13 06:51

サーブレットについて勉強しています。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher dispatcher = request.getRequestDispatcher("test.jsp"); dispatcher.forward(request, response); return; }

上記のコードについて、returnが書かれているコードとないコードがあるのですが、どちらが良いのでしょうか?

以前、https://teratail.com/questions/764で「returnで終了させた場合は例外処理のfinallyブロック内の処理が実行されます」という回答があったのですが、これと関係があるのでしょうか。

宜しくお願いします。

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

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

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

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

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

guest

回答3

0

以前、https://teratail.com/questions/764で「returnで終了させた場合は例外処理のfinallyブロック内の処理が実行されます」という回答があったのですが、これと関係があるのでしょうか。

これは例外処理(try-catch-finally)を入れていた場合なので、
今回のメソッドには例外処理がなく、関係ありません。

なので、最後のreturn;は冗長だと思います。

私はこんな風にreturn;を書いててできる上司から「無駄なことすんな」と怒られました。

投稿2019/02/07 09:02

azuapricot

総合スコア2341

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

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

natsunowakusei

2019/02/08 04:32

貴重な経験談をありがとうございました。 色々な現場があるのですね。 参考にさせて頂きます。
guest

0

ベストアンサー

あっても、なくても動作に変わりは無いので
必要か?と問われると。「必要は無い。」ですね。

総じて、記載したほうが良いと思います。
マストではないがベターという意味です。
理由は2点。

Servlet特有の理由で記載したほうが良いです。
下記のようなコードを書くとExceptionが発生します。

java

1response.Redirect("XXXXXXX"); 2response.Write("");

Redirect後は、responseの更新は認めていないらしく、Exceptionが発生します。
ずいぶん、古いVersionのJavaでしたし、
私が利用していた、WebアプリケーションServerの問題かもしれません。
かなり有名な商用Serverとだけお伝えします。

結果、私はExceptionが発生しているPG全ての「response.Redirect("XXXXXXX");」の後に
returnをつける作業をすることになりました。

今回のケースでも似たことが起こる可能性もあります。
ただ、毎回つけるつけないの判断をして、付け忘れるよりかは、
全部つけてしまった方が、分かりやすいですしコードも早く書けます。

理由をもう一つ。これは個人差もあると思います。
可読性を上げるためです。

なぜなら、私は読みやすいコードは、読みやすい文章と似ている。と思っているからです。
「return」は文章で言うところの「以上」「敬具」と同じ意味でとらえています。

読み手に、コードはここで処理が終了ですよ。と明示する意味で記載しています。
無くても分かる。のですが、存在したほうが少し、読み手の理解が早くなります。

長くなってしまったコード等で効果を発揮します。
が、私は判断したくないのですべてのコードでreturnをつけます。

以上、長くなってしまいましたが、参考にしてもらえればと思います。

投稿2019/02/07 11:48

Kaiser

総合スコア295

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

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

natsunowakusei

2019/02/08 04:38

色々な考え方があるのですね。 大変勉強になりました。 丁寧な回答をありがとうございました。 参考にさせて頂きます。
guest

0

このメソッドには System.exit() も try - catch - finally も書かれていませんし, return は最後の行なので, 有っても無くても構わないと思います

投稿2019/02/07 08:51

jimbe

総合スコア12648

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

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

natsunowakusei

2019/02/08 04:31

回答ありがとうございました。 私もそうなのかな・・・と思って投稿した次第です。 参考にさせて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問