| CFTHROW | |
| 説明
開発者指定の例外を返します。この例外は、cfcatch タグで次のいずれかの type 属性オプションを指定して検出できます。
|
|
| カテゴリ
例外処理タグ、フロー制御タグ | |
シンタックス<cfthrow type = "exception_type " message = "message" detail = "detail_description " errorCode = "error_code " extendedInfo = "additional_information" object = "java_except_object"> | |
シンタックス<cfthrow object = #object_name#> |
|
| 関連項目
cferror、cfrethrow、cftry、onError、『ColdFusion MX 開発ガイド』の第14章の「エラーの処理」 |
|
| ヒストリ
ColdFusion MX: 返される例外が変更されました。このタグは、ColdFusion コンポーネントメソッドの例外を発生させます。
|
|
| 使用方法
エラーを返すには、このタグを cftry ブロック内で使用します。cfcatch ブロックを使用すると、次のような付属情報にアクセスできます。
さらに情報を取得するには、cfcatch.tagContext を使用してください。この配列には、タグスタック内でページ間のコントロールが切り替わる位置が示されます (例 : cfinclude、cfmodule)。 tagContext によって表示される情報を参照するには、ColdFusion MX Administrator の [デバッグ] ページで、[トレース情報] を選択します。 object パラメータの使用 このタグを object パラメータと共に使用するには、まず有効な Java 例外クラスを指定する cfobject タグを使用する必要があります。たとえば、次の cfobject タグでは、例外クラス myException (これは Java で作成する必要があります) のオブジェクト obj を定義しています。 <cfobject type="java" action="create" class="myException" name="obj"> 例外クラスにメッセージなどのパラメータを取るコンストラクタがある場合は、次のように特殊な init メソッドを使用してコンストラクタを呼び出すことができます。コンストラクタの属性を指定する必要がない場合は、この手順を省略できます。 <cfset obj.init("この先に進む前に作業内容を保存してください")>
次に cfthrow ステートメントを使用して、次のように例外を返すことができます。 <cfthrow object=#obj#> ColdFusion での Java オブジェクトの使用方法の詳細については、『ColdFusion MX 開発ガイド』の第37章の「CFML アプリケーションへの J2EE および Java 要素の統合」 を参照してください。 |
|
例<h3>cfthrow の例</h3>
<!--- cftry ブロックを開きます。 --->
<cftry>
<!--- エラーを返す条件を定義します。 --->
<cfif NOT IsDefined("URL.myID")>
<!--- エラーを返す --->
<cfthrow message = "ID が定義されていません。">
</cfif>
<!--- エラーを検出します。 --->
<cfcatch type = "application">
<!--- メッセージを表示します。 --->
<h3><b>エラーが発生しました</b></h3>
<cfoutput>
<!--- アプリケーションサーバーからの診断フィードバック --->
<p>#cfcatch.message#</p>
<p>タグスタックの内容は次のとおりです。</p>
<cfloop
index = i
from = 1 to = #ArrayLen(cfcatch.tagContext)#>
<cfset sCurrent = #cfcatch.tagContext[i]#>
<br>#i# #sCurrent["ID"]#
(#sCurrent["LINE"]#,#sCurrent["COLUMN"]#)
#sCurrent["TEMPLATE"]#
</cfloop>
</cfoutput>
</cfcatch>
</cftry>
|
|
| 例
次の例では、コンポーネントメソッドから例外を返す方法を示します。 <cfcomponent>
<cffunction name="getEmp">
<cfargument name="lastName" required="yes">
<cfquery name="empQuery" datasource="cfdocexamples" >
SELECT LASTNAME, FIRSTNAME, EMAIL
FROM tblEmployees
WHERE LASTNAME LIKE '#arguments.lastName#'
</cfquery>
<cfif empQuery.recordcount LT 1>
<cfthrow type="noQueryResult"
message="結果が見つかりません。やり直してください。">
<cfelse>
<cfreturn empQuery>
</cfif>
</cffunction>
</cfcomponent>
この例の説明と、さらに詳しい情報については、『ColdFusion MX 開発ガイド』の第10章の「ColdFusion コンポーネントの作成と使用」 を参照してください。 |
|
| TYPE | |
| オプション | |
Default value: "Application"
他の定義済みのタイプは ColdFusion アプリケーションでは生成されないため、入力しないでください。Application を指定する場合は、cfcatch のタイプを指定する必要はありません。 |
|
| MESSAGE | |
| オプション | |
|
例外的なイベントを示すメッセージです。 |
|
| DETAIL | |
| オプション | |
|
イベントの説明です。ColdFusion では、エラー位置を説明に追加します。サーバーでは、エラーがコードで検出されない場合にこのパラメータを使用します。 |
|
| ERRORCODE | |
| オプション | |
|
ユーザーが指定するカスタムエラーコードです。 |
|
| EXTENDEDINFO | |
| オプション | |
|
ユーザーが指定するカスタムエラーコードです。 |
|
| OBJECT | |
| オプション | |
|
cfobject タグの name 属性の値が必要です。 CFML タグからの Java 例外を返します。 この属性は、このタグのその他すべての属性とは独立しています。 |
|