目次 > 第2章 Server(Web)版チュートリアル > 2.10 例外処理(システム例外) > 2.10.2 動作確認
2.10.2 動作確認
本項の動作確認では、意図的にシステム例外を発生させるため、存在しないテーブルにアクセスするようにSQL文を修正する。
手順
本項では以下の作業が必要になる。
(1) SQL設定ファイルの編集
- “terasoluna-spring-thin-blank\sources\sqlMap.xml”を開き、“getUsers”のSQL文のテーブル名を変更する。
<!-- 全ユーザを取得する --> <select id="getUsers" resultClass="jp.terasoluna.thin.tutorial.web.usermanager.vo.SelectUserOutput"> SELECT ID, NAME, AGE, BIRTH FROM AAA </select>
(2) アプリケーションの動作確認
- “terasoluna-spring-thin-blank\h2db\h2db_start.bat”を起動する。
- H2DBの設定については「2.2 チュートリアル学習環境の整備 (6) データベースの設定」を参照のこと。
- 「2.2 チュートリアル学習環境の整備 (5) アプリケーションの動作確認」を参照し、Tomcatを起動してブラウザでアクセスする。
- 「一覧画面」に遷移すると、下図の「エラー画面」に遷移することを確認する。
■ エラー画面
- コンソール画面に、以下のエラーログが出力されていることを確認する。
・・・略・・・ [2009/XX/XX XX:XX:XX][ERROR][DefaultExceptionHandler] 例外ハンドラが例外を検知しました org.springframework.jdbc.BadSqlGrammarException: SqlMapClient operation; bad SQL grammar []; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException: --- The error occurred in sqlMap.xml. --- The error occurred while executing query. --- Check the SELECT ID, NAME, AGE, BIRTH FROM AAA . --- Check the SQL Statement (preparation failed). --- Cause: org.h2.jdbc.JdbcSQLException: テーブル AAA が見つかりません Table AAA not found; SQL statement: SELECT ID, NAME, AGE, BIRTH FROM AAA [42102-78] at org.h2.message.Message.getSQLException(Message.java:103) at org.h2.message.Message.getSQLException(Message.java:114) at org.h2.message.Message.getSQLException(Message.java:77) at org.h2.command.Parser.readTableOrView(Parser.java:4141) at org.h2.command.Parser.readTableFilter(Parser.java:915) at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1444) at org.h2.command.Parser.parseSelectSimple(Parser.java:1541) at org.h2.command.Parser.parseSelectSub(Parser.java:1438) at org.h2.command.Parser.parseSelectUnion(Parser.java:1283) at org.h2.command.Parser.parseSelect(Parser.java:1271) at org.h2.command.Parser.parsePrepared(Parser.java:394) at org.h2.command.Parser.parse(Parser.java:290) at org.h2.command.Parser.parse(Parser.java:262) at org.h2.command.Parser.prepareCommand(Parser.java:234) at org.h2.engine.Session.prepareLocal(Session.java:285) at org.h2.server.TcpServerThread.process(TcpServerThread.java:210) at org.h2.server.TcpServerThread.run(TcpServerThread.java:126) at java.lang.Thread.run(Thread.java:595) ・・・略・・・
まとめ
この節では以下のことを学習した。
- データベースやフレームワークで発生するシステム例外は、ビジネスロジックで例外処理をする必要はない。
- Server(Web)版では、システム例外のハンドラクラスを提供している。
- ハンドリングの設定は、Struts設定ファイルに記述する。