サーバサイドでエラーが発生するとは、つまり JavaScript の例外が発生すると同じです。そこで、次のとおり、サーバサイドで例外をスローするコードを用意しました。
<script type="text/javascript" src="jquery.js" runat="both"></script>
<script type="text/javascript" runat="server">
//<![CDATA[
jQuery(function($) {
throw 'ERROR!';
});
//]]>
</script>
そして、このサーバサイドのコードを実行すると、次のようなエラーページを表示し、そのエラーの原因がメッセージで示されます。このメッセージは、デバッグに役立ちます。このとき、ページのレンダリングは継続するので、その流れでクライアントサイドのコードも実行されることになります。
このサーバサイドのエラーメッセージを表示しないという選択もできます。そのときは、Config.UNCAUGHT_ERRORS_ARE_RESPONSE_ERRORS = false; とします。
次のような外部ファイルのインクルードに失敗したときも、エラーメッセージを表示しますが、Config.INCLUDE_ERRORS_ARE_RESPONSE_ERRORS = false; とすることで、インクルードのときのエラーメッセージのみ表示しないという選択もできます。
<jaxer:include src="jaxer-include/foo.html"></jaxer:include>
公開して運用するときには、上記のエラーメッセージを表示したり、継続して実行したりすると不都合があります。そのときは、Config.DISPLAY_ERRORS = false; とすることで、固定のエラーページを表示し、クライアントサイドのコードを実行しないようにできます。
固定のエラーページとして、Config.RESPONSE_ERROR_PAGE か Config.FATAL_ERROR_PAGE で指定したファイル(または文字列)の内容が表示されるはずなのですが、なぜか、次のような Jaxer のエラーページが表示されてしまいます。
Jaxer の不具合か環境か原因は把握できていません。ここで試した Jaxer のバージョンは 0.9.7.2472 Windows XP です。
0 件のコメント:
コメントを投稿