【发布时间】:2020-10-09 21:40:55
【问题描述】:
我对 erlang 很陌生,我正在尝试让一个基本的 try/catch 语句起作用。我正在使用 webmachine 处理一些请求,我真正想做的就是解析一些 JSON 数据并返回它。如果 JSON 数据无效,我只想返回一个错误消息。这是我的代码到目前为止。
(JSON数据无效)
to_text(ReqData, Context) ->
Body = "{\"firstName\": \"John\"\"lastName\": \"Smith\"}",
try decode(Body) of
_ -> {"Success! Json decoded!",ReqData,Context}
catch
_ -> {"Error! Json is invalid",ReqData,Context}
end.
decode(Body) ->
{struct, MJ} = mochijson:decode(Body).
代码可以编译,但是当我运行它并发送文本请求时,我收到以下错误。
error,{error,{case_clause,{{const,"lastName"},
": \"Smith\"}",
{decoder,utf8,null,1,31,comma}}},
[{mochijson,decode_object,3},
{mochijson,json_decode,2},
{webmachine_demo_resource,test,1},
{webmachine_demo_resource,to_text,2},
{webmachine_demo_resource,to_html,2},
{webmachine_resource,resource_call,3},
{webmachine_resource,do,3},
{webmachine_decision_core,resource_call,1}]}}
我到底做错了什么?文档说“catch”语句处理所有错误,或者我必须做一些事情来捕获 mochijson:decode 抛出的特定错误。 请任何线索或建议都会有所帮助。谢谢。
【问题讨论】: