Nemerle の try-catch-finally は F# の try-with と try-finally を合わせたようなものです。 F# では try-with-finaly と 3 つ併せて書くことはできませんが, Nemerle では可能です。
try-catch の部分が任意の型の値を返すのに対し, finally 節は void を返すことに注意が必要です。次の例では, finally 節の値は x
の値に影響しません。
#pragma indent def x = try 1 catch | _ => -1 finally 0 // warning N10005
例外は投げられないので x
の値は 1 になります。 finally 節は void を返すべきなのに int を返すので, N10005 警告が出ます。