thrift/java中的异常类型层次结构
是否有一种方法可以将类型层次结构信息添加到为Java生成的thrift异常类型中 我想定义一些人们可以重用的常见异常集。通常情况下,客户机不是处理单个异常,而是希望处理一组异常。例如,假设java客户机希望捕获所有错误请求并打印异常消息。客户机不希望处理个别异常,如TooBigParamException、MissingParamException等,而是希望捕获这些异常的父级:BadRequestException。是否有方法更改TooBigParamException、MissingParamException等的生成代码以添加扩展关系thrift/java中的异常类型层次结构,java,thrift,Java,Thrift,是否有一种方法可以将类型层次结构信息添加到为Java生成的thrift异常类型中 我想定义一些人们可以重用的常见异常集。通常情况下,客户机不是处理单个异常,而是希望处理一组异常。例如,假设java客户机希望捕获所有错误请求并打印异常消息。客户机不希望处理个别异常,如TooBigParamException、MissingParamException等,而是希望捕获这些异常的父级:BadRequestException。是否有方法更改TooBigParamException、MissingPara
我尝试了FacebookSwift(Java->Thrift转换),但它似乎无法与Apache Thrift无缝配合。在当前状态下,Apache Thrift不支持继承,既不支持
struct
/union
也不支持异常
。我猜想这是因为有些语言的继承过于复杂而无法实现,因为它不是语言的一部分
我想到的一个解决方案是将异常转换为结构,只有一个Thrift异常,并将异常数据转换为该异常。客户端捕获“公共”异常并重新引发该包中的任何异常
struct OverflowError {
1: double operator1
2: double operator2
3: string operation
}
struct DivByZeroError {
1: double numerator
}
union AllTheErrors {
1: OverflowError over
2: DivByZeroError div0
// more to come
}
exception MathError {
1: AllTheErrors theError
}
service ExceptionalCalculator {
double Add(1: double arg1, 2: double arg2) throws (1: MathError mex)
double Subtract(1: double arg1, 2: double arg2) throws (1: MathError mex)
double Divide(1: double arg1, 2: double arg2) throws (1: MathError mex)
double PriceOfDowJonesNextThursday() throws (1: MathError mex)
}
涉及到相当多的工作,但可能是一个解决方案
那边有一个,可能也会有帮助。我找到了一个不错的解决方案。虽然我不会说这里面没有黑客 当我开始时,我只有两个选择: