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 例外を返します。

この属性は、このタグのその他すべての属性とは独立しています。