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 例外を返します。 この属性は、このタグのその他すべての属性とは独立しています。 |