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

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

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

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

例外

例外(exception)とは、プログラムの処理実行中に発生する、通常の処理の続行を妨げる特殊な事象のことを呼びます。この「例外」が発生した場合に、現在の処理を中断し、変わりに別の処理を実行させる事を「例外処理」と呼びます。

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

2回答

4591閲覧

SpringBoot及びJavaでのエラーハンドリング・例外処理について

Harmagedon_0

総合スコア1

Java

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

例外

例外(exception)とは、プログラムの処理実行中に発生する、通常の処理の続行を妨げる特殊な事象のことを呼びます。この「例外」が発生した場合に、現在の処理を中断し、変わりに別の処理を実行させる事を「例外処理」と呼びます。

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

2グッド

0クリップ

投稿2020/08/03 06:55

編集2020/08/04 01:45

前提・実現したいこと

SpringBoot及びJava8を使用して、社内開発をしています。
しかし、社内の人間のプログラミング能力が総じて低く、私がまだ一番わかるという状況(周りを頼れない)かつ 
今まであまり関わって来なかったエラーハンドリング・例外処理についての知識・考え方が不足しているので、確認したいことがあります。

周りの人に聞けという人が一定数いることを危惧して書いただけなので無視してください。

質問内容

2点、ご教示お願いいたします。
まず1点目に、エラーハンドリング・例外処理行う場合、各クラスでtry-catch-finallyを書いて処理するより、上位クラスを作成し、それに全ての処理を投げさせて処理させた方が良いのでしょうか。
仮にFileクラスを通してファイルを開いていた場合、開いたファイルを開放する必要がありますが、これを上位クラスに投げると、変数名が分からず(これも投げられる?)閉じられないと思うので、こういったケースのみ自前でtry-catch-finallyを書いて処理をするべきなのでしょうか。
また、いくつか当たりを付けて書くべきだと思いますが、一般的にあり得る例外の一覧などありますでしょうか。

2点目、エラー発生時にするべきことです。
例えば、404が発生した場合など、デフォルトでWhitelabel Error Pageが表示されますが、
この場合、ログイン画面などに遷移できるエラーページなどを作成するのが一般的でしょうか。
それとも、こういうことをするのはご法度でしょうか?(問題が起こっているのに無理やり動かすのは論外と見たことがあるので)

不確定要素が多くふわふわとしていますが、ご教示お願いいたします。

bracket_i, A-pZ👍を押しています

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

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

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

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

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

Orlofsky

2020/08/03 08:25 編集

質問の状況から、とても掲示板に頼っただけでまともに開発できるようには思えません。 熟練者を何人か雇いましょう。COVID-19の感染拡大が止まりません。マスクを付けていても電車、バス、エレベータに乗るのも恐いです。日本では無能さがバレバレになるのを嫌う管理職がテレワークを妨害するのは無視して、完全テレワーク制にしましょう。 https://nikkan-spa.jp/1671782
Harmagedon_0

2020/08/03 08:24 編集

私の文章力が低いのは重々承知の上ですが、それができないから聞いているって文脈から判断できませんか?
Orlofsky

2020/08/03 08:27

破綻するのが目に見えているから、老婆心ながら。爆
Harmagedon_0

2020/08/04 01:52 編集

そんなことは分かっているし、もう終盤で、エラー周りの設計がひどすぎるので改めて聞いているだけです。 あと、老婆心の意味を調べた方が良いですよw爆とは結び付かないのでw しかも爆なんて死語ですしw それにコロナがあーだこーだとか質問に関係ないですし。
guest

回答2

0

Fileクラスを使用し、ファイルを参照しようとしたものの存在せず、「FileNotFoundException」が発生した場合に、開いたファイルを開放する必要があります

これについては、ファイルが存在しないのならそもそも開放する必要がないのでは。

開発終盤でこのような質問が出るようでは、エラーハンドリングだけでなく全体の設計にも問題が山積みと思われるので、Orlofskyさんのおっしゃる通り熟練者を雇って設計を一からやり直した方が良いと思います。

投稿2020/08/03 23:10

javahack

総合スコア1088

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

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

Harmagedon_0

2020/08/04 01:50 編集

>これについては、ファイルが存在しないのならそもそも開放する必要がないのでは。 これは自分でも意味不明だったので削除しました。 >開発終盤でこのような質問が出るようでは、エラーハンドリングだけでなく全体の設計にも問題が山積 >みと思われるので、Orlofskyさんのおっしゃる通り熟練者を雇って設計を一からやり直した方が良いと >思います。 重々承知しています。周りにプログラムのプの字が分からない人間だらけだとこうなります。
guest

0

ベストアンサー

例外処理について

よくやるのは、ExceptionHandlerを作成するパターンですかね。一般的なアプリケーションで発生する例外については、予めハンドラーメソッドが用意されています。(ResponseEntityExceptionHandlerを参照してみるとよいです。)
FileNotFoundExceptionなどシステムが安定稼働している際に発生するべきではない例外の処理については、参考リンクの2番目(TERASOLUNA)が参考になると思います。

各種エラーページについて

認識の通り通常がフレームワークがデフォルトで返却する画面ではなく、プロジェクト独自のエラーページを作成することが一般的です。例外のスタックトレースなどをユーザに見せないことが主な理由です。

投稿2020/08/03 14:33

kawash

総合スコア31

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

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

Harmagedon_0

2020/08/04 03:02

回答ありがとうございました。参考にさせていただきます。 まさに求めていた回答です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問