ユーザ定義の例外処理について余り詳しく知っていなかったのでメモ…_(: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が無かったりするので
使う時は要注意ですね…