12月19日(月)1、2コマ目
今日、やったこと
Javaでの例外
今日のホワイトボード
Javaには例外が2種類ある
Javaには検査例外と実行時例外の2種類がある。ちなみに、C#の例外はJavaの実行時例外と同じ。
|
| 図 検査例外と実行時例外 |
検査例外をスローするメソッドは throws句で例外スローを宣言する必要がある。
検査例外をスローするメソッドを呼び出す際は、例外をキャッチするか、キャッチしないならthrows句で例外スローを宣言する必要がある。
例外の使い分け
検査例外は必ずどこかでキャッチする必要がある。(キャッチしないとコンパイルエラー)
そのため、エラー処理を強制することができる。よって、利用者にリカバリ処理をしてほしいエラーは検査例外スローで通知すれば、どこかで必ずエラー処理をすることになる。
|
| 図 検査例外と実行時例外の使い分け |
サンプルアプリケーション
ユーザー登録を行うアプリを作りました。
ポイントは
- 利用者にリカバリしてほしいエラーはなに?
- そんなエラー発生時にスローする検査例外をどうする?
です。
|
| 図 エラー発生時の対応 |
Userクラス(User.java)
とくになにもないかと。
UserDAOクラス(UserDAO.java)
insert()メソッドがポイント。
SQL実行時にエラーが発生すると、SQLExceptionがスローされる。
そのSQLExceptionにはgetErrorCode()メソッドがあり、戻り値がオラクルのエラーコード。
そのエラーコードで何が起きたかがわかるため、対応する検査例外をスローしている。
検査例外クラス(DupplicateIDException.java)
登録時に指定されたIDがすでに利用されているときにスローされる検査例外クラス。
検査例外クラス(InvalidInvitorException.java)
登録時に指定されたIDと紹介者IDが同じときにスローされる検査例外クラス。
検査例外クラス(NoInvitorException.java)
登録時に指定された紹介者が未登録のときにスローされる検査例外クラス。
サーブレット(IndexSrv.java)
ポイントはdoPost()。検査例外がスローされる=>利用者にリカバリを要請するです。
index.jsp
特になんてことはないかと。
次回は
評価用課題をやってもらいます。これがこの授業の最後の課題です。


