今日、やったこと Javaでの例外 今日のホワイトボード Javaには例外が2種類ある Javaには 検査例外 と 実行時例外 の2種類がある。ちなみに、C#の例外はJavaの実行時例外と同じ。 図 検査例外と実行時例外 検査例外をスローするメソッドは throws句で例外スローを宣言する必要がある 。 検査例外をスローするメソッドを呼び出す際は、例外をキャッチするか、キャッチしないならthrows句で例外スローを宣言する必要がある 。 例外の使い分け 検査例外は必ずどこかでキャッチする必要がある。(キャッチしないとコンパイルエラー) そのため、エラー処理を強制することができる。よって、利用者にリカバリ処理をしてほしいエラーは検査例外スローで通知すれば、どこかで必ずエラー処理をすることになる。 図 検査例外と実行時例外の使い分け サンプルアプリケーション ユーザー登録を行うアプリを作りました。 ポイントは 利用者にリカバリしてほしいエラーはなに? そんなエラー発生時にスローする検査例外をどうする? です。 図 エラー発生時の対応 Userクラス(User.java) とくになにもないかと。 UserDAOクラス(UserDAO.java) insert()メソッドがポイント。 SQL実行時にエラーが発生すると、SQLExceptionがスローされる。 そのSQLExceptionにはgetErrorCode()メソッドがあり、戻り値がオラクルのエラーコード。 そのエラーコードで何が起きたかがわかるため、対応する検査例外をスローしている。 検査例外クラス(DupplicateIDException.java) ...