Java 如何从HttpServletRequest getParameter记录CharConversionException

Java 如何从HttpServletRequest getParameter记录CharConversionException,java,servlets,encoding,Java,Servlets,Encoding,在HttpServletRequest上调用getParameter时,有时会出现以下错误: INFO: Character decoding failed. Parameter [SomeParameter] with value [SomeValue] has been ignored. Note that the name and value quoted here may be corrupted due to the failed decoding. Use debug level l

在HttpServletRequest上调用getParameter时,有时会出现以下错误:

INFO: Character decoding failed. Parameter [SomeParameter] with value [SomeValue] has been ignored. Note that the name and value quoted here may be corrupted due to the failed decoding. Use debug level logging to see the original, non-corrupted values.
java.io.CharConversionException: isHexDigit
...
为了找到这个错误的来源,我想记录完整的请求url,但问题是您无法“识别”何时抛出错误,因为它是在getParameter方法中捕获的。 在getParameter方法之外,不会抛出错误,您可以捕获并记录错误

那么有没有办法让我自己发现这个编码错误呢


注意:我知道是什么导致了错误,参数中的%编码错误。我只是不知道它来自哪里,因为它是源代码中非常重要的位置。

这是一条Tomcat错误消息

如果Tomcat无法解析参数,它会将一个特殊的请求属性设置为
Boolean.TRUE
,您可以使用它来检测错误的参数:

boolean paramParseFailed = 
    request.getAttribute("org.apache.catalina.parameter_parse_failed") != null;

请注意,这仅在读取参数后设置,因为Tomcat会惰性地填充参数。

非常感谢!这正是我想要的。