質問: javaのexceptionについて(エラーハンドリング) javaの例外の取り扱いについて お世話になります。javaでwebアプリケーションを開発しているものです。エラーハンドリングについて、悩んでいます。 私は、我流でプログラムの開発を行ってきたため、エラーハンドリングについて、あまり知識がありません。 今回とあるプロジェクトのリーダーを任されることになり開発を進めていたのですが、気がついたらメンバーのプログラムにtry,catch,throwsなどのエラーハンドリングがコーディングされていない状態で困っています。(みんな外国人で私が今まで一から教えていました。) そこで、皆様はどのようにjavaで例外を扱っているのかをお伺いしたいと思い投稿いたしました。 私の少ない認識では、 (1)最上位のクラス、画面に一番近いクラスでtry,catchを行う (2)exceptionはすべてのクラスの例外をcatchするが、一つ一つのエラーを明確に定義する方がよい(何のエラーが発生したのかわからない為) ⇒ただし、ここが一番の悩みどころです。エラーを設定する考え方として、配列を扱っている場合は、arrayindexとか、ファイルを扱っている場合はi/oexceptionとかソースコードを見て判断すべきでしょうか? (3)独自エラークラスを作る場合は、exception,runnableexceptionを敬称する。 ⇒そもそも何故、独自exceptionクラスを作る必要があるのでしょうか?画面によってメッセージ、処理、遷移先を変えたいから? 上記が私の持っている知識と、疑問点です。 正直自分自身がよくわかっていないため、他の外国人メンバーに説明できません。とりあえず、exceptionをthrowするように言っているのですが、このままじゃまずいと思い投稿しました。 どなたか忌憚のないご意見をお聞かせください。
回答: プロジェクトのコンセプト、テーマ、目的を明確にしていくと、 例外処理の使用に対する方向性もまとまってくると思いますよ。 例えば、共通ライブラリ作成の時など、 再利用性よりも、使いやすさや開発効率を優先するなら、 例外は、極力throwせずに、javaの標準ライブラリの例外も、可能な所は、 ラッピングクラスにて、具体的に処理してしまうでしょう。 例えば、使いやすさよりも、再利用性を優先する共通ライブラリなら、 クラス設計は抽象的にしておいて、色々な場面で利用できるようにするでしょう。 その場合、独自にexceptionを作成し、throwする事により、具体的な処理は、 クラスの呼び出し元に委譲することになるでしょう。 オブジェクト指向の考えを用いるなら、クラス部品を再利用率毎に分類し、 例外を処理する役割を、分担すると思います。 こんなところで、回答になっているだろうか・・・