7.12.4. 例外処理に対する XML の使用


すべての例外クラスにアノテーションを付加することは不可能なので、 Seam ではこの機能を pages.xml でも指定できるようにしています。
<pages>
  <exception class="javax.persistence.EntityNotFoundException">
    <http-error error-code="404"/>
  </exception>
  
  <exception class="javax.persistence.PersistenceException">
    <end-conversation/>
    <redirect view-id="/error.xhtml">
      <message>Database access failed</message>
    </redirect>
  </exception>
  
  <exception>
    <end-conversation/>
    <redirect view-id="/error.xhtml">
      <message>Unexpected failure</message>
    </redirect>
  </exception>   
</pages>
Copy to Clipboard Toggle word wrap
最後の <exception> 宣言はクラスを指定していないので、 アノテーションまたは pages.xml で指定された処理なしですべての例外に対してキャッチオールで動作します。
EL を使ってリダイレクト先の view-id を指定することもできます。
EL によって処理された例外インスタンスにアクセスすることもできます。 Seam はそれを対話コンテキストに置きます。 たとえば、 例外のメッセージにアクセスするには次のようにします。
...
  throw new AuthorizationException("You are not allowed to do this!");

<pages>
  <exception class="org.jboss.seam.security.AuthorizationException">
    <end-conversation/>
    <redirect view-id="/error.xhtml">
      <message severity="WARN">
        #{org.jboss.seam.handledException.message}
      </message>
    </redirect>
  </exception>
</pages>
Copy to Clipboard Toggle word wrap
org.jboss.seam.handledException は例外ハンドラによって処理されたネストした例外を保持します。 その最も外側の (ラッパーの) 例外は org.jboss.seam.caughtException によって取得可能です。

7.12.4.1. 例外のロギングの抑制

pages.xml で定義されている例外ハンドラの場合、 例外がログ記録されるレベルを指定したり、 例外のログ記録を全て抑制することが可能です。 log および log-level の各属性を使用して例外のロギングを制御します。 以下に示すように、 log="false" が設定されている場合に指定された例外が発生するとログメッセージは生成されません。
<exception class="org.jboss.seam.security.NotLoggedInException" 
           log="false"> 
  <redirect view-id="/register.xhtml">
    <message severity="warn">
      You must be a member to use this feature
    </message> 
  </redirect> 
</exception>
Copy to Clipboard Toggle word wrap
log 属性を指定しないとデフォルトでは true に設定されます。 つまり例外はログ記録されます。 代わりに log-level を指定して例外がログ記録されるレベルを制御することができます。
<exception class="org.jboss.seam.security.NotLoggedInException" 
           log-level="info"> 
  <redirect view-id="/register.xhtml"> 
    <message severity="warn">
      You must be a member to use this feature
    </message> 
  </redirect> 
</exception>
Copy to Clipboard Toggle word wrap
log-level に指定できる値は、 fatal、 error、 warn、 info、 debugtrace です。 log-level を指定しない、または無効な値を設定した場合は、 log-level はデフォルトで error に設定されます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat