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

特になんてことはないかと。


次回は

評価用課題をやってもらいます。これがこの授業の最後の課題です。




このブログの人気の投稿

11月14日(月)1、2コマ目

10月27日(木)3、4コマ目

10月4日(火)1、2コマ目