0

我需要更改用 JAVA 编写的现有 Web 服务。Web 服务会进行一些输入验证,例如当数字的输入无效时,它会抛出 NumberFormatException。

这会导致用户出现错误消息,这是正确的。但是因为我们使用 log4j,所以异常在日志文件中被记录为错误,这是不需要的。

我的问题是:如何在不引发异常的情况下返回 SoapFault?我认为这会向用户返回错误,但不会将错误记录为日志文件中的错误。如果这是不可能的。如何将 log4j 配置为不记录某些异常?

4

2 回答 2

0

您可以将数字解析包装在 try\catch 块中,捕获 NumberFormatException。它不会在其他任何地方传播,并且在 catch 块中您可以只返回 SoapFault。

int value;
try{
    value = Integer.parseInt(valueString);
}
catch(NumberFormatException e){
    value = 0;
    return SoapFault;
}
于 2012-11-15T10:37:08.750 回答
0

返回 null 并没有解决我的问题,所以我创建了一个自定义异常并在我的 log4j.xml 中排除了该类:

<category name="My.Company.DoNotLogException">
  <priority value="off" />
</category>        

现在用户仍然收到错误,但该错误不再显示在我的日志中。

谢谢大家帮助我。

于 2012-11-16T13:11:53.430 回答