强大、牛X的RPC框架 - thrift,就没怂过!
问题
在用thrift做RPC框架存在服务端有时需要返回null 的情况,这时客户端就报 org.apache.thrift.TApplicationException: detectEvent failed: unknown result 异常。
原因
点击去,查看service类时发现thrift 服务端返回null时,会抛出异常,也就是不接受null的情况。
1 2 3 4 5 6 7 8 9
| public java.util.Set<Bean> recv_detectWord() throws org.apache.thrift.TException { detectWord_result result = new detectWord_result(); receiveBase(result, "detectWord"); if (result.isSetSuccess()) { return result.success; } throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "detectWord failed: unknown result"); }
|
但是这个异常出现有两个可能的原因是:
- 服务器抛出一个(未捕获)的异常。
- 你试图返回一个空结果,这是Thrift非法的。
解决
问题找到后,就简单了。客户端代码抓取TApplicationException异常,再处理你的事即可。
1 2 3 4 5 6 7 8 9 10
| try { Bean response = client.detectEvent(titleSplit, contentSplit, domains);
if (response != null) { System.out.println(response.toString()); } } catch (org.apache.thrift.TApplicationException e) { System.out.println("response is null"); }
|
完结,希望能帮助你!