即使设置了“__set_what_UTF8”也始终显示 "Default TException."
Always showing "Default TException." even when "__set_what_UTF8" is set
我是 Thrift 的新手。
在调用 Thrift API 之后,我总是遇到异常问题 "Default TException."
在服务器端,有一个定义的异常:"Invalid_argument_error"。
Invalid_argument_error exp;
std::string error_string = "Invalid Argument!";
exp.__set_what_UTF8(error_string);
throw exp;
然后抓住它...
catch (Invalid_argument_error &e)
{
Invalid_argument_error t;
t.__set_what_UTF8(e.what());
}
即使我设置了异常的原因,我在 Thrift 客户端上也得到了错误的原因。
任何帮助将不胜感激。
当服务器端出现异常,然后将其传递给客户端,必须有两件事:
- 异常类型需要从
TException
派生
- function call in the IDL必须提到异常类型
如果第一点不满足,那么在大多数情况下你会在客户端收到一个通用的TApplicationException
,或者连接可能会断开(库中有一些实现差异,这是正在合并中)。
如果不满足第二点,假设您正在抛出一个正确派生的异常,则不会有生成的代码来序列化或反序列化它。因此,您基本上得到与上述相同的结果,但出于不同的原因。
来自上面链接的文档:
Functions
[21] Function ::= 'oneway'? FunctionType Identifier '(' Field* ')' Throws? ListSeparator?
[22] FunctionType ::= FieldType | 'void'
[23] Throws ::= 'throws' '(' Field* ')'
我是 Thrift 的新手。 在调用 Thrift API 之后,我总是遇到异常问题 "Default TException." 在服务器端,有一个定义的异常:"Invalid_argument_error"。
Invalid_argument_error exp;
std::string error_string = "Invalid Argument!";
exp.__set_what_UTF8(error_string);
throw exp;
然后抓住它...
catch (Invalid_argument_error &e)
{
Invalid_argument_error t;
t.__set_what_UTF8(e.what());
}
即使我设置了异常的原因,我在 Thrift 客户端上也得到了错误的原因。 任何帮助将不胜感激。
当服务器端出现异常,然后将其传递给客户端,必须有两件事:
- 异常类型需要从
TException
派生
- function call in the IDL必须提到异常类型
如果第一点不满足,那么在大多数情况下你会在客户端收到一个通用的TApplicationException
,或者连接可能会断开(库中有一些实现差异,这是正在合并中)。
如果不满足第二点,假设您正在抛出一个正确派生的异常,则不会有生成的代码来序列化或反序列化它。因此,您基本上得到与上述相同的结果,但出于不同的原因。
来自上面链接的文档:
Functions [21] Function ::= 'oneway'? FunctionType Identifier '(' Field* ')' Throws? ListSeparator? [22] FunctionType ::= FieldType | 'void' [23] Throws ::= 'throws' '(' Field* ')'