CFTHROW |
説明 開発者指定の例外を返します。この例外は、cfcatch タグで次のいずれかの type 属性オプションを指定して検出できます。 type = "custom_type" type = "Application" type = "Any"
カテゴリ 例外処理タグ、フロー制御タグ
シンタックス
    <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.message を使用した場合) 詳細 (cfcatch.detail を使用した場合) エラーコード (cfcatch.errorcode を使用した場合) さらに情報を取得するには、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" カスタムタイプ Application 他の定義済みのタイプは ColdFusion アプリケーションでは生成されないため、入力しないでください。Application を指定する場合は、cfcatch のタイプを指定する必要はありません。

MESSAGE |
| オプション
例外的なイベントを示すメッセージです。

DETAIL |
| オプション
イベントの説明です。ColdFusion では、エラー位置を説明に追加します。サーバーでは、エラーがコードで検出されない場合にこのパラメータを使用します。

ERRORCODE |
| オプション
ユーザーが指定するカスタムエラーコードです。

EXTENDEDINFO |
| オプション
ユーザーが指定するカスタムエラーコードです。

OBJECT |
| オプション
cfobject タグの name 属性の値が必要です。 CFML タグからの Java 例外を返します。 この属性は、このタグのその他すべての属性とは独立しています。