例外処理

ColdFusion には、CFScript 内で例外処理を行うために try と catch という 2 つのステートメントが用意されています。 これらのステートメントは、CFML の cftry タグと cfcatch タグに相当します。

注意:

ColdFusion における例外処理について詳しくは、エラー処理を参照してください。

例外処理のシンタックスとルール

CFScript の例外処理コードの形式を次に示します。

try { 
 Code where exceptions will be caught 
} 
catch(exceptionType exceptionVariable) { 
 Code to handle exceptions of type exceptionType  
 that occur in the try block 
} 
...  
catch(exceptionTypeN exceptionVariableN) { 
 Code to handle exceptions of type  
 exceptionTypeN that occur in the try block 
} 
finally { 
 Code that will execute whether there is an exception or not. 
}
注意:

CFScript では、catch および finally ステートメントは try ブロックの後に配置します。try ブロックの中には含めないでください。この構造は、cfcatch および cffinally タグを本文に含める必要がある cftry タグと異なります。

try ステートメントを使用する場合は、catch ステートメントも使用する必要があります。 catch ブロックでは、exceptionVariable 変数に例外のタイプが渡されます。この変数は、cfcatch タグの cfcatch.Type ビルトイン変数に相当します。
finally ブロックはオプションです。 このブロックに含まれるコードは常に実行され、try ブロックと catch ブロックに含まれるコードの後に実行されます。

例外処理の例

次のコードは、CFScript での例外処理を示しています。 このコードでは、CreateObject 関数を使用して Java オブジェクトを作成しています。 catch ステートメントは、CreateObject 関数で例外が発生した場合にのみ実行されます。表示される情報には、例外メッセージが含まれています。この except.Message 変数は、渡された Java 例外オブジェクトで Java の getMessage メソッドを呼び出すことに相当します。 finally ブロックのメッセージは、catch ブロックのメッセージの後に表示されます。

<cfscript> 
 try { 
  emp = CreateObject(&quot;Java&quot;, &quot;Employees&quot;); 
 } 
 catch(any excpt) { 
  WriteOutput(&quot;The application was unable to perform a required operation.<br> 
 Please try again later.<br>If this problem persists, contact 
 Customer Service and include the following information:<br> 
    #excpt.Message#<br>&quot;); 
 } 
 finally { 
 writeoutput(&quot;<br>Thank you for visiting our web site.<br>come back soon!&quot;); 
 } 
</cfscript>

catch ステートメントでの複数の例外処理

メモ:ColdFusion(2025 リリース)で追加されました。

ColdFusion では、複数の例外処理もサポートされています。 try/catch ブロック内でパイプで区切られた単一の catch ステートメントを使用して、複数の例外を処理できます。

次に例を示します。

<cfscript>
    try {
        // 例外をスローする可能性のあるコード
        result = 10 / 0; // これは算術例外をスローします
    } 
    catch (expression|application|database e) {
        // このブロックは算術またはゼロ除算のエラーを検知します
        writeOutput(&quot;Error caught: &quot; & e.message);
    } 
    catch (any e) {
        // その他すべての例外の汎用キャッチブロック
        writeOutput(&quot;Unknown Error: &quot; & e.message);
    }
</cfscript>

出力

エラーが検知されました:ゼロ除算。

ヘルプをすばやく簡単に入手

新規ユーザーの場合