Hatena::Grouperlang

msyktの日記

 | 

2013-12-14

4.3 try...catch

22:28

afterセクションのコードはtryセクションやcatchセクションの式のコードの直後に実行される。

-module(test43).
-compile(export_all).

func1() ->
    try nonthrow_func() of
        _ -> io:fwrite("a\n")
    catch
        _:_ -> io:fwrite("b\n") 
    after
        io:fwrite("c\n")
    end.

func2() ->
    try throw_func() of
        _ -> io:fwrite("a\n")
    catch
        _:_ -> io:fwrite("b\n")
    after
        io:fwrite("c\n")
    end.

throw_func() ->
    throw(a).

nonthrow_func() ->
    ok.
Eshell V5.10.3  (abort with ^G)
1> c(test43).
{ok,test43}
2> test43:func1().
a
c
ok
3> test43:func2().
b
c
ok

確かに。try...catch...afterの順で実行されている。

 |