<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="mmres://user_interface_reference.css" rel="stylesheet" type="text/css">
<title>CFCATCH</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
   <div id="説明">
   <table cellpadding="0" cellspacing="0" border="0" width="100%" class="main">
      <tr> 
         <td valign="top" class="name">CFCATCH</td>
         <td valign="top" nowrap class="compatibility">&nbsp;</td>
      </tr>
      <tr>
         <td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
      </tr>


    </td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="description"><span class="title">説明</span>
<p>
cftry タグの内部で使用します。これらを併用することで、ColdFusion ページで発生する例外の検出や処理を実行します。例外は、データベースオペレーションの失敗、インクルードファイルの欠如、開発者によって指定されたイベントなど、ColdFusion ページ内での正常な命令の流れを妨げるイベントです。
</p>
    </td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="description"><span class="title">カテゴリ</span>
<p>
例外処理タグ
</p>
  <tr>
    <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="syntax"><span class="title">シンタックス</span><pre>&lt;cfcatch type = &quot;exceptiontype&quot;&gt;
   ここに例外処理コードを追加します。
&lt;/cfcatch&gt;
</pre>    </td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="description"><span class="title">関連項目</span>
<p>
cftry、cferror、cfrethrow、cfthrow、onError、『ColdFusion MX 開発ガイド』の第14章の「エラーの処理」 
</p>
    </td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="description"><span class="title">ヒストリ</span>
<p>
ColdFusion&#160;MX: 
</p>
<ul>

<li>SQLSTATE 値の動作が変更されました。cfcatch タグ内の SQLSTATE 戻り値は、データベースドライバのタイプによって異なります。</li>
<ul>

<li>Type 1 (JDBC-ODBC ブリッジ) の場合、値は ColdFusion 5 での値と同じになります。</li>

<li>Type 4 (100% Java、ネイティブメソッドなし) の場合、値は異なる可能性があります。</li>

<p>
アプリケーションのフロー制御が SQLSTATE 値に依存している場合は、ColdFusion&#160;MX でアプリケーションを使用すると予期せぬ動作が発生することがあります。 
</p>
    </td>
  </tr></ul>

<li>type=&quot;any&quot; のときのこのタグの動作が変更されました。type=&quot;any&quot; を指定した cfcatch タグを含める場合、ブロック内の最後の cfcatch タグに type=&quot;any&quot; を指定して他のすべてのテストがその前に実行されていることを確認する必要はありません。ColdFusion により、一致度が最も高い cfcatch ブロックが検出されます。 </li>

<li>cfscript タグの動作が変更されました。このタグは、cftry タグおよび cfcatch タグと同じ役割を果たす try ステートメントと catch ステートメントを含みます。</li>

<li>オブジェクトの修正について変更がありました。cfcatch によって返されたオブジェクトを修正することはできません。 </li>

<li>返される例外が変更されました。cfcollection、cfindex、および cfsearch タグは、SEARCHENGINE 例外を返すことができます。以前のリリースでは、これらのタグの処理時にエラーが起きたときは UNKNOWN 例外のみが返されていました。</li>
</ul>

<p>

</p>
    </td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="description"><span class="title">使用方法</span>
<p>
cftry ブロック内に少なくとも 1 つの cfcatch タグを記述する必要があります。cfcatch タグは cftry ブロックの最後に配置します。複数の cfcatch タグがある場合、ColdFusion&#160;MX はそれらを出現順にテストします。このタグには終了タグが必要です。
</p>

<p>
type=&quot;any&quot; が指定されている場合、ColdFusion&#160;MX は CFML タグ、データソース、または外部オブジェクトからの例外を検出します。例外タイプを取得するには、次のようなコードを使用します。
</p>
<pre>   #cfcatch.type#
</pre>
<p>
アプリケーションで cfthrow タグを使用して、開発者定義の例外を返すことができます。これらの例外は、次の type オプションのいずれかによって検出できます。
</p>
<ul>

<li>&quot;custom_type&quot;</li>

<li>&quot;Application&quot;</li>

<li>&quot;Any&quot;</li>
</ul>

<p>
custom_type タイプは、cfthrow タグで指定される開発者定義のタイプです。カスタムタイプをピリオドで連結された一連の文字列として定義した場合 (&quot;MyApp.BusinessRuleException.InvalidAccount&quot; など)、ColdFusion MX はその文字パターンに基づいてカスタムタイプを検出できます。ColdFusion MX は、cftry ブロック内で、一致する例外タイプの cfcatch タグを探します。このとき、最も条件の厳しいもの (全文字列が一致するもの) から条件の緩いものへという順序で検索が行われます。 
</p>

<p>
たとえば、次のようなタイプを定義したとします。
</p>
<pre>&lt;cfthrow type = &quot;MyApp.BusinessRuleException.InvalidAccount&quot;&gt;
</pre>
<p>
このとき、次のような cfcatch タグがある場合は、このタグが例外を処理します。
</p>
<pre>&lt;cfcatch type = &quot;MyApp.BusinessRuleException.InvalidAccount&quot;&gt; 
</pre>
<p>
上記のタグがない場合、次のような cfcatch タグがあれば、このタグが例外を処理します。
</p>
<pre>&lt;cfcatch type = &quot;MyApp.BusinessRuleException&quot;&gt; 
</pre>
<p>
このタグもない場合、次のような cfcatch タグがあれば、このタグが例外を処理します。
</p>
<pre>&lt;cfcatch type = &quot;MyApp&quot;&gt; 
</pre>
<p>
カスタム例外タイプを検出するために、cfcatch タグを任意の順序でコーディングすることができます。
</p>

<p>
type = &quot;Application&quot; を指定した cfcatch タグは、カスタム例外を定義する cfthrow タグ内で Application タイプが指定されているカスタム例外のみを検出します。
</p>

<p>
cfinclude タグ、cfmodule タグ、および cferror タグは、type = &quot;template&quot; の例外を返します。
</p>

<p>
cfcatch ブロック内で発生した例外を、その cfcatch タグを直接囲んでいる cftry ブロックで処理することはできません。ただし、cfrethrow タグを使用して現在アクティブな例外を再び返すことができます。
</p>

<p>
cfcatch タグの変数では、次の例外情報を提供できます。 
</p>

<p>
</p><div align="left">
<table border="1">
  <caption></caption>
  <tr align="center">    <th><strong>cfcatch 変数&#160;</strong></th>
    <th><strong>内容</strong></th>
</tr>
  <tr align="left">    <td><pre>cfcatch.type
</pre></td>
    <td>
<p>タイプ : cfcatch で指定した例外タイプです。</p></td>
</tr>
  <tr align="left">    <td><pre>cfcatch.message
</pre></td>
    <td>
<p>メッセージ : cfcatch.message 変数内に設定される場合は、例外の診断メッセージです。それ以外の場合は、空の文字列となります。</p></td>
</tr>
  <tr align="left">    <td><pre>cfcatch.detail
</pre></td>
    <td>
<p>CFML インタープリタからの詳細メッセージ、または cfthrow タグ内で指定されたメッセージです。cfthrow ではなく ColdFusion によって 例外が生成されたときは、メッセージに HTML 形式を含めることができます。このメッセージは、どのタグが例外を返したのかを判別するのに役立ちます。</p></td>
</tr>
  <tr align="left">    <td><pre>cfcatch.tagcontext
</pre></td>
    <td>
<p>タグコンテキスト構造の配列です。それぞれは、例外発生時のアクティブなタグコンテキストのレベルを表します。</p></td>
</tr>
  <tr align="left">    <td><pre>cfcatch.NativeErrorCode
</pre></td>
    <td>
<p>type = &quot;database&quot; に適用されます。例外に割り当てられるネイティブエラーコードです。通常、データベースドライバから、データベースオペレーションの失敗を診断するためのエラーコードが与えられます。デフォルト : -1</p></td>
</tr>
  <tr align="left">    <td><pre>cfcatch.SQLState
</pre></td>
    <td>
<p>type = &quot;database&quot; に適用されます。例外に割り当てられる SQLState 値です。通常、データベースドライバから、データベースオペレーションの失敗を診断するためのエラーコードが与えられます。デフォルト : -1</p></td>
</tr>
  <tr align="left">    <td><pre>cfcatch.Sql
</pre></td>
    <td>
<p>type = &quot;database&quot; に適用されます。データソースに送信される SQL ステートメントです。</p></td>
</tr>
  <tr align="left">    <td><pre>cfcatch.queryError
</pre></td>
    <td>
<p>type = &quot;database&quot; に適用されます。データベースドライバによってレポートされたエラーメッセージです。</p></td>
</tr>
  <tr align="left">    <td><pre>cfcatch.where
</pre></td>
    <td>
<p>type = &quot;database&quot; に適用されます。クエリーで cfqueryparam タグを使用する場合は、クエリーパラメータの名前/値のペアです。</p></td>
</tr>
  <tr align="left">    <td><pre>cfcatch.ErrNumber
</pre></td>
    <td>
<p>type = &quot;expression&quot; に適用されます。内部式のエラー番号です。</p></td>
</tr>
  <tr align="left">    <td><pre>cfcatch.MissingFileName
</pre></td>
    <td>
<p>type = &quot;missingInclude&quot; に適用されます。インクルードできなかったファイルの名前です。</p></td>
</tr>
  <tr align="left">    <td><pre>cfcatch.LockName
</pre></td>
    <td>
<p>type = &quot;lock&quot; に適用されます。影響を受けたロックの名前です。ロックに名前が付けられていない場合、値は &quot;anonymous&quot; になります。</p></td>
</tr>
  <tr align="left">    <td><pre>cfcatch.LockOperation
</pre></td>
    <td>
<p>type = &quot;lock&quot; に適用されます。エラーとなったオペレーションです (Timeout、Create Mutex、または Unknown)。</p></td>
</tr>
  <tr align="left">    <td><pre>cfcatch.ErrorCode
</pre></td>
    <td>
<p>type = &quot;custom&quot; に適用されます。文字列エラーコードです。</p></td>
</tr>
  <tr align="left">    <td><pre>cfcatch.ExtendedInfo
</pre></td>
    <td>
<p>type = &quot;application&quot; および &quot;custom&quot; に適用されます。カスタムエラーメッセージです。デフォルトの例外ハンドラでは表示できない情報です。</p></td>
</tr>
</table>
</div>
<p>
</p>
    </td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="description"><span class="title">拡張例外タイプ</span>
<p>
次の表に、type 属性で指定できる拡張例外タイプの一覧を示します。
</p>

<p>
</p><div align="left">
<table border="1">
  <caption></caption>
  <tr align="center">    <th><strong>ColdFusion の拡張例外タイプ</strong></th>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.CFEXECUTE.OutputError</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.CFEXECUTE.Timeout</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.FileException</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPAccepted</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPAuthFailure</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPBadGateway</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPBadRequest</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPCFHTTPRequestEntityTooLarge</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPCGIValueNotPassed</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPConflict</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPContentLengthRequired</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPContinue</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPCookieValueNotPassed</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPCreated</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPFailure</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPFileInvalidPath</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPFileNotFound</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPFileNotPassed</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPFileNotRenderable</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPForbidden</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPGatewayTimeout</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPGone</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPMethodNotAllowed</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPMovedPermanently</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPMovedTemporarily</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPMultipleChoices</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPNoContent</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPNonAuthoritativeInfo</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPNotAcceptable</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPNotFound</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPNotImplemented</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPNotModified</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPPartialContent</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPPaymentRequired</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPPreconditionFailed</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPProxyAuthenticationRequired</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPRequestURITooLarge</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPResetContent</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPSeeOther</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPServerError</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPServiceUnavailable</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPSwitchingProtocols</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPUnsupportedMediaType</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPUrlValueNotPassed</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPUseProxy</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.HTTPVersionNotSupported</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.POPAuthFailure</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.POPConnectionFailure</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.POPDeleteError</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.Request.Timeout</p></td>
</tr>
  <tr align="left">    <td>
<p>COM.Allaire.ColdFusion.SERVLETJRunError</p></td>
</tr>
  <tr align="left">    <td>
<p>COMCOM.Allaire.ColdFusion.HTTPConnectionTimeout</p></td>
</tr>
</table>
</div>
<p>
</p>
    </td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="description"><span class="title">例</span><pre>&lt;!--- TagContext を使用してタグスタックを表示する cfcatch の例 ---&gt;
&lt;h3&gt;cftry の例&lt;/h3&gt;
&lt;!--- cftry ブロックを開きます。 ---&gt;
&lt;cftry&gt;
   &lt;!--- テーブル名 &quot;employees&quot; のスペルが誤って &quot;employeeas&quot; になっています。 ---&gt;
   &lt;cfquery name = &quot;TestQuery&quot; dataSource = &quot;cfdocexamples&quot;&gt;
      SELECT *
      FROM EMPLOYEEAS
   &lt;/cfquery&gt;
   &lt;!--- 他の処理がここで行われます。 ---&gt;
   &lt;!--- 検出するエラーのタイプを指定します。 ---&gt;
   &lt;cfcatch type = &quot;Database&quot;&gt;
      &lt;!--- 表示するメッセージです。 ---&gt;
      &lt;h3&gt;データベース&lt;b&gt;エラー&lt;/b&gt;&lt;が発生しました。/h3&gt;
      &lt;cfoutput&gt;
         &lt;!--- ColdFusion MX からの診断メッセージです。 ---&gt;
         &lt;p&gt;#cfcatch.message#&lt;/p&gt;
         &lt;p&gt;例外エラー、type = #CFCATCH.TYPE# を検出しました。 &lt;/p&gt;
         &lt;p&gt;タグスタックの内容は次のとおりです。&lt;/p&gt;
         &lt;cfdump var=&quot;#cfcatch.tagcontext#&quot;&gt;
      &lt;/cfoutput&gt;
   &lt;/cfcatch&gt;
&lt;/cftry&gt;
</pre>
         </td>
      </tr>
   </table>
   </div>
<div id="TYPE">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>  
<td valign="top" class="name">TYPE</td>
  <td valign="top" nowrap class="compatibility">&nbsp;</td>
  </tr>
  <tr>
  <td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
  </tr>

  <tr>
  <td valign="top" class="syntax">&nbsp;</td>
  <td valign="top" nowrap class="requirements">オプション</td>
  </tr>
  <tr>
  <td colspan="2" class="clearseparation">&nbsp;</td>
  </tr>
  <tr>
  <td valign="top" colspan="2" class="description">

<strong>Default value:</strong> "any"

<ul>

<li>application: アプリケーション例外を検出します。</li>

<li>database: データベース例外を検出します。</li>

<li>template: ColdFusion ページ例外を検出します。</li>

<li>security: セキュリティの例外を検出します。</li>

<li>object: オブジェクトの例外を検出します。</li>

<li>missingInclude: インクルードファイル欠如の例外を検出します。</li>

<li>expression: 式の例外を検出します。</li>

<li>lock: ロックの例外を検出します。</li>

<li>custom_type: cfthrow タグで定義された特定のカスタム例外タイプを検出します。</li>

<li>searchengine: Verity サーチエンジンの例外を検出します。</li>

<li>any: すべての例外タイプを検出します。</li>
</ul>


  </td>
  </tr>
  </table>
</div>

  </body>
</html>
