我试图抓住无效的json,而解析它与jiffy在牛仔web套接字处理程序。如果json是有效的/无效的,我想转发一个适当的消息到websocket_info
,它将回复客户端。这是我的代码。
websocket_handle({text, Msg}, Req, State) ->
lager:info("Got message ~p",[Msg]),
try jiffy:decode(Msg) of
{[{A,B}]}->{{[{A,B}]},Req,State};
_->{{invalid,Msg},Req,State}
catch
_:_->
{{invalid,Msg},Req,State}
end;
websocket_handle(_Data, Req, State) ->
{ok, Req, State}.
websocket_info({[{A,B}]},Req,State) ->
{reply,{text,jiffy:encode({registered,B})},Req,State};
websocket_info({invalid,Msg},Req,State)->
{reply,{text,jiffy:encode({error,<<"invalid json">>})},Req,State};
这会导致运行时异常。
12:07:48.406[错误]牧场侦听器http已连接到进程
那我该怎么做呢?
回复应该从websocket_handle
返回:
websocket_handle({text, Msg}, Req, State) ->
lager:info("Got message ~p", [Msg]),
try jiffy:decode(Msg) of
{[{A, B}]}->
{reply, {text, jiffy:encode({[{registered,B}]})}, Req, State};
_ ->
{reply, {text, jiffy:encode({[{error,<<"invalid json">>}]})}, Req, State}
catch
_:_ ->
{reply, {text, jiffy:encode({[{error,<<"invalid json">>}]})}, Req, State};
end;
websocket_handle(_Data, Req, State) ->
{ok, Req, State}.
websocket_info(_Info, Req, State) ->
{ok, Req, State}.
1.1 异常处理的基本使用 try: <语句块1> except: <语句块2> try 捕获异常 except 发生异常时执行 try: <语句块1> except <异常类型名字>: <语句块2> except <异常类型名字> 发生对应异常时才会执行 1.2 异常处理的高级使用 try: <语句块1> except
由于预设审批人退出企业,导致模版自动停用时,可以在“异常处理”页面进行相应操作。
我有一个带post请求的控制器。我试图用一个简单的NotNull注释验证POJO。我正在使用ControllerAdvice来处理异常。 所以我尝试使用它,但当我启动应用程序时,我得到了以下信息: 因此,我想为BindException创建自己的处理程序,但当我为BindException类创建ExceptionHandler时,spring应用程序不会启动。如果我注释掉handleBindExc
我目前正在尝试为spring boot实现一个自定义的错误处理程序,我已经用以下方法实现了它: 不知为什么这不起作用,并且异常仍然被抛给客户端,是否有某种方法捕获方法抛出的异常并忽略它。
问题内容: 如果我在.NET中没有记错的话,可以为未处理的异常注册“全局”处理程序。我想知道Java是否有类似的东西。 问题答案: 是的,有,但只有在没有设置时才会触发。
如何在批处理模式的情况下处理反序列化异常? 我正在使用Spring boot-2.3.8版本的Spring kafka。 尝试过此选项: 但它抛出了一个异常:由java引起。lang.IllegalStateException:错误处理程序必须是ErrorHandler,而不是org。springframework。Kafka。听众。请参阅OcuCurrentBatchErrorHandler 以