有人对此提出了类似的问题,但并未按照相同的条款提出问题.
我试图安全地解码base64二进制文件,在一个上下文中,输入可能不是二进制,甚至是base64编码.
Erlang说让它崩溃并处理它 - 如果我这样做,最有效的方法是什么.效率在这个系统中非常重要.
我知道要避免try/catch,因为它构建了一个完整的堆栈跟踪 - 但是,这个上下文的catch关键字是否合理?catch关键字更快/更有效吗?
在诸如的功能中
safe_decode(Binary) ->
case catch base64:decode(Binary) of
<<Result/binary>> -> {ok, Result};
{'EXIT', _} -> {not_base64, Binary}
end.
Run Code Online (Sandbox Code Playgroud)
这真的比尝试捕获更有效吗?如何在效率很重要的系统中最好地处理这种情况,即需要尽可能有效地处理涉及构建堆栈跟踪和/或需要比快乐路径更多处理的崩溃.
我只是在学习二郎,所以也许答案就是盯着我.
erlang performance runtime-error exception processing-efficiency