目次 > 第2章 Server(Web)版チュートリアル >  2.10 例外処理(システム例外) > 2.10.2 動作確認

2.10.2 動作確認

本項の動作確認では、意図的にシステム例外を発生させるため、存在しないテーブルにアクセスするようにSQL文を修正する。

手順

本項では以下の作業が必要になる。

(1) SQL設定ファイルの編集

  1. “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) アプリケーションの動作確認

  1. “terasoluna-spring-thin-blank\h2db\h2db_start.bat”を起動する。
  2. 2.2 チュートリアル学習環境の整備 (5) アプリケーションの動作確認」を参照し、Tomcatを起動してブラウザでアクセスする。
  3. 「一覧画面」に遷移すると、下図の「エラー画面」に遷移することを確認する。

    エラー画面


  4. コンソール画面に、以下のエラーログが出力されていることを確認する。
    ・・・略・・・
    [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設定ファイルに記述する。

次節:2.11 例外処理(業務例外)

Copyright (C) 2009 NTT DATA CORPORATION