我需要更改用 JAVA 编写的现有 Web 服务。Web 服务会进行一些输入验证,例如当数字的输入无效时,它会抛出 NumberFormatException。
这会导致用户出现错误消息,这是正确的。但是因为我们使用 log4j,所以异常在日志文件中被记录为错误,这是不需要的。
我的问题是:如何在不引发异常的情况下返回 SoapFault?我认为这会向用户返回错误,但不会将错误记录为日志文件中的错误。如果这是不可能的。如何将 log4j 配置为不记录某些异常?
我需要更改用 JAVA 编写的现有 Web 服务。Web 服务会进行一些输入验证,例如当数字的输入无效时,它会抛出 NumberFormatException。
这会导致用户出现错误消息,这是正确的。但是因为我们使用 log4j,所以异常在日志文件中被记录为错误,这是不需要的。
我的问题是:如何在不引发异常的情况下返回 SoapFault?我认为这会向用户返回错误,但不会将错误记录为日志文件中的错误。如果这是不可能的。如何将 log4j 配置为不记录某些异常?
您可以将数字解析包装在 try\catch 块中,捕获 NumberFormatException。它不会在其他任何地方传播,并且在 catch 块中您可以只返回 SoapFault。
int value;
try{
value = Integer.parseInt(valueString);
}
catch(NumberFormatException e){
value = 0;
return SoapFault;
}
返回 null 并没有解决我的问题,所以我创建了一个自定义异常并在我的 log4j.xml 中排除了该类:
<category name="My.Company.DoNotLogException">
<priority value="off" />
</category>
现在用户仍然收到错误,但该错误不再显示在我的日志中。
谢谢大家帮助我。