CFERROR  
説明

エラーの発生時にカスタム HTML ページを表示します。この機能を使用すると、アプリケーションの機能ページとエラーページで外観を統一できます。

 
カテゴリ

例外処理タグ、拡張タグ、アプリケーションフレームワークタグ

 
シンタックス
<cferror
   type = "a type"
   template = "template_path"
   mailTo = "email_address"
   exception = "exception_type">
 
関連項目

cfrethrow、cfthrow、cftry、『ColdFusion MX 開発ガイド』の第14章の「エラーの処理」

 
ヒストリ

ColdFusion MX: exception 属性の monitor オプションが使用禁止になりました。今後のリリースではこのタグは機能せずエラーを引き起こす可能性があります。

 
使用方法

このタグは、アプリケーション内のページにカスタムエラーメッセージを提供するために使われます。これにより、エラーが発生したときでもアプリケーションの外観を一貫させることができます。

通常は、このタグを "Application.cfc" または "Application.cfm" ファイルに埋め込んで、アプリケーション全体のエラー処理責任を指定します。type="validation" を指定した場合は、これらのファイルのいずれかにこのタグを埋め込む必要があります。ColdFusion は、他のページではこのタグを無視します。

cftry タグおよび cfcatch タグを使用すると、cferror の場合に比べてより対話的に ColdFusion ページ内の ColdFusion エラーを処理できます。ただし、一般的なエラーに対しては cferror タグで十分対処できます。

エラーページを正しく表示するには、cferror タグを含むページのエンコードにcfencode ユーティリティを使用しないようにしてください。

 
ページタイプ

次の表に、指定できるエラーのタイプと、そのエラータイプを扱うページ上で使用できるコードを示します。

ページタイプ 説明 使用方法

Exception

未処理の例外が検出されたときに、CFML 言語プロセッサによってダイナミックに呼び出されます。

すべての CFML タグを使用します。エラー変数は cfoutput タグ内に置く必要があります。

特定の例外タイプを扱うか、例外についての全般的な情報を表示することができます。

Request

「エラー変数」セクションで説明するエラー変数が含まれます。

CFML タグを含めることはできませんが、エラー変数をシャープ記号 (#) で囲むと、エラー変数の値を表示することができます (例 : #error.MailTo#)。

例外タイプなどの他のエラー処理メソッドに対するバックアップエラーハンドラとして使用します。

Validation

hidden フォームフィールドの検証または onSubmit 検証を行うフォームの送信時に発生したデータ入力検証エラーを処理します。

CFML タグを含めることはできませんが、エラー変数をシャープ記号 (#) で囲むと、エラー変数の値を表示することができます (例 : #Error.InvalidFields#)。

"Application.cfc" または "Application.cfm" ファイルに検証エラーハンドラを指定する必要があります。

hidden フォームフィールドまたは onSubmit の形式検証エラーだけを処理します。

 
エラー変数

cferror タグの template 属性で指定される例外処理ページには、エラー変数が 1 つ以上含まれます。エラーを表示するときに、エラー変数の値が置換されます。

次の表に、エラー変数を示します。

ページタイプ エラー変数 説明

Validation のみ

error.validationHeader

検証メッセージのヘッダのテキストです。

error.invalidFields

検証エラーの順不同のリストです。

error.validationFooter

検証メッセージのフッタのテキストです。

Request と Exception

error.diagnostics

ColdFusion MX からの詳細なエラー診断です。

error.mailTo

電子メールアドレスです。cferror.MailTo の値と同じです。

error.dateTime

エラーが発生した日付と時刻です。

error.browser

エラーの発生時に動作していたブラウザです。

error.remoteAddress

リモートクライアントの IP アドレスです。

error.HTTPReferer

エラーが発生したページへのリンクに、クライアントがアクセスしたページです。

error.template

エラーの発生時に実行していたページです。

error.generatedContent

エラー発生時点までにページが生成していたコンテンツです。

error.queryString

クライアントリクエストの URL クエリー文字列です。

Exception のみ

error.message

例外に関連付けられているエラーメッセージです。

error.rootCause

例外の根本原因です。この構造体には、cfcatch タグによって返された情報が含まれます。たとえば、データベース例外の場合、エラーを発生させた SQL ステートメントは error.RootCause.Sql 変数内にあります。Java 例外の場合、この変数には、例外の "根本原因" の原因として JVM によってレポートされる Java サーブレットの例外が含まれています。

error.tagContext

タグスタック内の各タグの情報を含んでいる構造体の配列です。このタグスタックは、現在開かれているタグから成ります。

error.type

例外タイプです。

メモ: type = "exception" の場合には、Error の代わりに接頭辞 cferror を使用することができます。たとえば、cferror.diagnostics、cferror.mailTo、cferror.dateTime などです。
 
<h3>cferror の例</h3>

<!--- ページ内での cferror 呼び出しの例です。
      メモ : cferror type="VALIDATION" を使用する場合、これを 
       Application.cfc または Application.cfm に挿入する必要があります。 --->
<cferror type = "REQUEST"
template = "request_err.cfm"
mailTo = "admin@mywebsite.com">
<!--- このクエリーは既存以外のデータソースを呼び出し、処理対象となるエラーを引き起こします。--- --->
<cfquery name="testQuery" datasource="doesNotExist">
select * from nothing
</cfquery>

<!--- このエラーを処理するためのページ (request_err.cfm) の例です。 --->
<html>
<head>
<title>エラーが発生しました</title>
</head> 
<body>
<h2>エラーが発生しました</h2>
<p>
この問題が引き続き起きる場合は、#error.mailTo# に
次の情報を連絡してください。</p>
<p>
<ul>
<li><b>ロケーション :</b> #error.remoteAddress#
<li><b>ブラウザ :</b> #error.browser#
<li><b>エラー発生日時 :</b> #error.dateTime#
<li><b>移動元のページ :</b> #error.HTTPReferer#
<li><b>メッセージの内容 :</b>
<p>#error.diagnostics#</p>
</ul> 
TYPE  
  必須
 

カスタムエラーページが処理するエラータイプです。このタイプにより、ColdFusion がエラーページをどのように処理するかが決まります。詳細については、『ColdFusion MX 開発ガイド』の第14章の「カスタムエラーページの指定」 の「カスタムエラーページの指定」を参照してください。

  • exception: exception 属性で指定した例外タイプです。
  • validation: サーバーサイドのタイプ検証で認識されたエラーです。
  • request: 遭遇したエラーです。
TEMPLATE  
  必須
 

カスタムエラーページへの相対パスです。ColdFusion ページは、以前はテンプレートと呼ばれていました。

MAILTO  
  オプション
 

電子メールアドレスです。この属性は、エラーページ上で変数 error.mailto として使用できます。ColdFusion がこのアドレスに何かを自動的に送信することはありません。

EXCEPTION  
  オプション
 
Default value: "any"

このタグが扱う例外のタイプです。

  • application: アプリケーションの例外
  • database: データベースの例外
  • template: ColdFusion ページの例外
  • security: セキュリティの例外
  • object: オブジェクトの例外
  • missingInclude: インクルードファイル欠如の例外
  • expression: 式の例外
  • lock: ロックの例外
  • custom_type: cfthrow タグで定義される、開発者によって定義された例外
  • any: すべての例外タイプ

例外タイプの詳細については、cftryを参照してください。