使用错误转发执行一系列 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.