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("Java", "Employees"); } catch(any excpt) { WriteOutput("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>"); } finally { writeoutput("<br>Thank you for visiting our web site.<br>come back soon!"); } </cfscript>
<cfscript> try { // 例外をスローする可能性のあるコード result = 10 / 0; // これは算術例外をスローします } catch (expression|application|database e) { // このブロックは算術またはゼロ除算のエラーを検知します writeOutput("Error caught: " & e.message); } catch (any e) { // その他すべての例外の汎用キャッチブロック writeOutput("Unknown Error: " & e.message); } </cfscript>
出力
エラーが検知されました:ゼロ除算。