JSFを使用してWebアプリケーションを開発しています。できたのでテストしましたが、時々ランタイム例外がスローされます。
だから、例外がスローされるたびにユーザーを特別なエラーページにリダイレクトする方法(完全なTomcatログで500エラーを表示するのではなく)?
特定の Throwable
(またはそのサブクラス)または HTTPステータスコード に表示するページを指定できる<error-page>
でweb.xml
を宣言するだけです=。例えば。
<error-page>
<exception-type>Java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
Java.lang.Exception
のサブクラスにエラーページが表示されますが、Java.lang.Throwable
やJava.lang.Error
は表示されません。これにより、あらゆる種類のThrowable
に対して独自のエラーページを作成できます。例えば。 Java.sql.SQLException
、Java.io.IOException
など。
または、
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
hTTP 500エラーでエラーページが表示されますが、404(ページが見つかりません)、403(禁止)などに別のエラーページを指定することもできます。
<%@page isErrorPage="true" %>
の先頭でerror.jsp
を宣言すると、ELで${exception}
によってスローされた Exception
(したがって、そのゲッターもすべて)にアクセスできます。
<p>Message: ${exception.message}</p>
このテーマに関するJava EE 5チュートリアル も参照してください。
Web.xmlで:
<error-page>
<error-code>500</error-code>
<location>/errorpages/500.jsp</location>
</error-page>
特定の例外またはThrowable
を拡張する例外をキャッチすることもできます。
<error-page>
<exception-type>Java.lang.Throwable</exception-type>
<location>/errorpages/500.jsp</location>
</error-page>
If you use Java config in spring, you can follow,
@Configuration
public class ExcpConfig {
@Bean(name = "simpleMappingExceptionResolver")
public SimpleMappingExceptionResolver simpleMappingExceptionResolver() {
SimpleMappingExceptionResolver resolver= new SimpleMappingExceptionResolver();
Properties mappings = new Properties();
resolver.setExceptionMappings(mappings); // None by default
resolver.setExceptionAttribute("ErrorOccurred"); // Default is "exception"
resolver.setDefaultErrorView("500"); // 500.jsp
return r;
}
}