java中间件webservices - 异常处理

时间:2011-08-17 03:51:13

标签: java

我通常会看到一个代码,它几乎包含了用于整个Web服务操作的try块。理由是照顾不期望的结果。说服程序员不要遵循这些风格的最佳方法是什么?

当然,我们确实希望向客户提供有意义的信息。我们如何处理这种情况?

1 个答案:

答案 0 :(得分:0)

通常,在webservice中,我只捕获可能从应用程序服务层抛出的特定异常(对客户有意义)。我这样做是为了将异常转换为适当的响应状态代码,例如:
IllegalArgumentException - > Status.BAD_REQUEST,
CustomerNotFoundException - > Status.NOT_FOUND

为此,您还可以使用异常映射器;这是Apache CXF的一个例子: http://svn.apache.org/repos/asf/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/SecurityExceptionMapper.java

未映射的所有其他(运行时)异常导致500状态代码,在我看来这很好 - 这是内部服务器错误,很可能是软件错误或基础结构问题(数据库已关闭)。您的日志文件中有堆栈跟踪,必须立即做出反应,而不是通知客户在某些情况下调用您的某个内部方法会导致ArrayIndexOutofBoundException:)