CFCATCH | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
説明
cftry タグの内部で使用します。これらを併用することで、ColdFusion ページで発生する例外の検出や処理を実行します。例外は、データベースオペレーションの失敗、インクルードファイルの欠如、開発者によって指定されたイベントなど、ColdFusion ページ内での正常な命令の流れを妨げるイベントです。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
カテゴリ
例外処理タグ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
シンタックス<cfcatch type = "exceptiontype"> ここに例外処理コードを追加します。 </cfcatch> |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
関連項目
cftry、cferror、cfrethrow、cfthrow、onError、『ColdFusion MX 開発ガイド』の第14章の「エラーの処理」 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
ヒストリ
ColdFusion MX:
アプリケーションのフロー制御が SQLSTATE 値に依存している場合は、ColdFusion MX でアプリケーションを使用すると予期せぬ動作が発生することがあります。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
使用方法
cftry ブロック内に少なくとも 1 つの cfcatch タグを記述する必要があります。cfcatch タグは cftry ブロックの最後に配置します。複数の cfcatch タグがある場合、ColdFusion MX はそれらを出現順にテストします。このタグには終了タグが必要です。 type="any" が指定されている場合、ColdFusion MX は CFML タグ、データソース、または外部オブジェクトからの例外を検出します。例外タイプを取得するには、次のようなコードを使用します。 #cfcatch.type# アプリケーションで cfthrow タグを使用して、開発者定義の例外を返すことができます。これらの例外は、次の type オプションのいずれかによって検出できます。
custom_type タイプは、cfthrow タグで指定される開発者定義のタイプです。カスタムタイプをピリオドで連結された一連の文字列として定義した場合 ("MyApp.BusinessRuleException.InvalidAccount" など)、ColdFusion MX はその文字パターンに基づいてカスタムタイプを検出できます。ColdFusion MX は、cftry ブロック内で、一致する例外タイプの cfcatch タグを探します。このとき、最も条件の厳しいもの (全文字列が一致するもの) から条件の緩いものへという順序で検索が行われます。 たとえば、次のようなタイプを定義したとします。 <cfthrow type = "MyApp.BusinessRuleException.InvalidAccount"> このとき、次のような cfcatch タグがある場合は、このタグが例外を処理します。 <cfcatch type = "MyApp.BusinessRuleException.InvalidAccount"> 上記のタグがない場合、次のような cfcatch タグがあれば、このタグが例外を処理します。 <cfcatch type = "MyApp.BusinessRuleException"> このタグもない場合、次のような cfcatch タグがあれば、このタグが例外を処理します。 <cfcatch type = "MyApp"> カスタム例外タイプを検出するために、cfcatch タグを任意の順序でコーディングすることができます。 type = "Application" を指定した cfcatch タグは、カスタム例外を定義する cfthrow タグ内で Application タイプが指定されているカスタム例外のみを検出します。 cfinclude タグ、cfmodule タグ、および cferror タグは、type = "template" の例外を返します。 cfcatch ブロック内で発生した例外を、その cfcatch タグを直接囲んでいる cftry ブロックで処理することはできません。ただし、cfrethrow タグを使用して現在アクティブな例外を再び返すことができます。 cfcatch タグの変数では、次の例外情報を提供できます。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
拡張例外タイプ
次の表に、type 属性で指定できる拡張例外タイプの一覧を示します。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
例<!--- TagContext を使用してタグスタックを表示する cfcatch の例 ---> <h3>cftry の例</h3> <!--- cftry ブロックを開きます。 ---> <cftry> <!--- テーブル名 "employees" のスペルが誤って "employeeas" になっています。 ---> <cfquery name = "TestQuery" dataSource = "cfdocexamples"> SELECT * FROM EMPLOYEEAS </cfquery> <!--- 他の処理がここで行われます。 ---> <!--- 検出するエラーのタイプを指定します。 ---> <cfcatch type = "Database"> <!--- 表示するメッセージです。 ---> <h3>データベース<b>エラー</b><が発生しました。/h3> <cfoutput> <!--- ColdFusion MX からの診断メッセージです。 ---> <p>#cfcatch.message#</p> <p>例外エラー、type = #CFCATCH.TYPE# を検出しました。 </p> <p>タグスタックの内容は次のとおりです。</p> <cfdump var="#cfcatch.tagcontext#"> </cfoutput> </cfcatch> </cftry> |
TYPE | |
オプション | |
Default value: "any"
|