使用错误转发执行一系列 Erlang 函数
Executing series of Erlang functions with error forwarding
我想执行一系列函数,这些函数可以 return 相同的值(ok
或 {error, SomeError}
)并在其中任何一个失败时向上转发错误。我知道如何使用许多嵌套案例语句来实现这一点,如下所示。
case fun1 of
ok ->
case fun2 of
ok ->
...;
{error, Error} ->
{error, Error};
{error, Error} ->
{error, Error}
end.
有没有其他方法可以更优雅地做到这一点,例如可以用 Rust 语言通过结果转发来完成?
为什么你不使用如下所示的 try..catch
:
// 编辑:{error, Error}
似乎来自 erlang:error/1
。它不是成功的模式,所以我稍微更改了代码。
test()->
try
func1(),
func2()
of
ok -> do_any_thing()
catch
error:Error -> {error, Error)
end.
我想执行一系列函数,这些函数可以 return 相同的值(ok
或 {error, SomeError}
)并在其中任何一个失败时向上转发错误。我知道如何使用许多嵌套案例语句来实现这一点,如下所示。
case fun1 of
ok ->
case fun2 of
ok ->
...;
{error, Error} ->
{error, Error};
{error, Error} ->
{error, Error}
end.
有没有其他方法可以更优雅地做到这一点,例如可以用 Rust 语言通过结果转发来完成?
为什么你不使用如下所示的 try..catch
:
// 编辑:{error, Error}
似乎来自 erlang:error/1
。它不是成功的模式,所以我稍微更改了代码。
test()->
try
func1(),
func2()
of
ok -> do_any_thing()
catch
error:Error -> {error, Error)
end.