我有一个典型的RESTful Web服务,有两层。资源层和服务层。使用现代对象关系映射库,DAO层似乎已经过时了。
我正在使用Google Cloud Endpoints,这不会令人惊讶地以Java Exceptions的形式返回HTTP错误。我有一组专用的服务层可以抛出异常,例如对象关系映射库中的Object Not Found Exception,以及其他内部异常。可以说,每个内部异常都有一个HTTP Exception对应物。
为了让资源安全地调用服务方法,该调用将包含在一系列try catch中。
try {
resourceObject = CorrespondingService.method(...);
} catch (InternalExceptionOne internalExceptionOne) {
throw new CorrespondingWebExcpetionOne(internalExceptionOne.getMessage());
} catch (InternalExceptionTwo internalExceptionTwo) {
throw new CorrespondingWebExcpetionTwo(internalExceptionTwo.getMessage());
} catch (InternalExceptionThree internalExceptionThree) {
throw new CorrespondingWebExcpetionThree(internalExceptionThree.getMessage());
}
由于每次从资源层调用服务方法都必须包含在同一系列的try catch语句中,这会产生大量重复的代码。
我正在寻找创建一个可以充当WebExcpetionTranslator的实用工具,但我必须传递一个方法才能在try catch下运行。不知道如何传递方法和参数,然后如何随后调用所传递的方法。
这看起来有点草率?那里有什么东西可以用注释做到这一点?
如何将方法和任意参数传递给实用程序方法,然后使用参数调用传递的方法?
注释怎么样?您是否可以制作自定义注释来处理不同的异常?
P.S。我的技术堆栈是GAE,Objectify和Google Cloud Endpoints。