【ColdFusion】ユーザ定義の例外処理について

ユーザ定義の例外処理について余り詳しく知っていなかったのでメモ…_(:3」∠)_

cfcatchタグの順番に関係せず、cftryタグ内で最もtypeが一致している例外が実行されます。

下記のサンプルコードを実行すると、22行目からの例外処理が実行されます。

<cftry>
    <!--- ユーザ定義の例外をthrow --->
    <cfthrow type="TestApp.TestException.InvalidData">

    <!---
        下記の順に優先して例外処理が呼び出される
        1.TestApp.TestException.InvalidData
        2.TestApp.TestException
        3.TestApp
     --->
     <cfcatch type="any">
         <cfoutput>
             CatchException is [any]
         </cfoutput>
     </cfcatch>
    <cfcatch type="TestApp">
        <cfoutput>
            CatchException is [TestApp]
        </cfoutput>
    </cfcatch>
    <!---  --->
    <cfcatch type="TestApp.TestException">
        <cfoutput>
            CatchException is [TestApp.TestException]
        </cfoutput>
    </cfcatch>
    <cfcatch type="TestApp.TestException.InvalidData">
        <cfoutput>
            CatchException is [TestApp.TestException.InvalidData]
        </cfoutput>
    </cfcatch>
</cftry>

ついでですが、「any」を追加しても結果は同じでした。

<cfcatch type="any">
    <cfoutput>
        CatchException is [any]
    </cfoutput>
</cfcatch>

C#と違って例外処理の記述順に厳しくなかったり、finallyが無かったりするので
使う時は要注意ですね…

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です