我在 Grails 下运行的 Grails webapp 中遇到了一个奇怪的问题:
java.io.UnsupportedEncodingException
"ISO8859_10"
由于各种未知的编码字符串(例如, )而经常抛出"ISO-8859-10"
,奇怪的是这完全在 Resin 和 Grails 代码中完成。也就是说 - 抛出异常时不涉及自定义代码。
我不确定是 Grails 还是 servlet 容器的代码应该处理异常。但我认为应该在某个地方处理异常,而不是一直冒泡到 stderr。
这是完全的例外:
java.io.UnsupportedEncodingException: ISO-8859-10
at com.caucho.vfs.i18n.JDKWriter$OutputStreamEncodingWriter.<init>(JDKWriter.java:112)
at com.caucho.vfs.i18n.JDKWriter.create(JDKWriter.java:79)
at com.caucho.vfs.Encoding.getWriteEncoding(Encoding.java:231)
at com.caucho.server.connection.ToByteResponseStream.setEncoding(ToByteResponseStream.java:137)
at com.caucho.server.connection.AbstractHttpResponse.setLocale(AbstractHttpResponse.java:1683)
at com.caucho.server.connection.HttpServletResponseImpl.setLocale(HttpServletResponseImpl.java: 115)
at javax.servlet.ServletResponseWrapper.setLocale(ServletResponseWrapper.java:139)
at javax.servlet.ServletResponseWrapper.setLocale(ServletResponseWrapper.java:139)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1035)
at org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet.doDispatch(GrailsDispatcherServlet.java:290)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:114)
我的问题:
- 是否应该处理异常?如果是这样,是 servlet 容器(Resin)还是 Web 框架(Grails)的责任?
- 你将如何解决这个问题?(我宁愿不让异常日志杂乱无章地出现我无能为力的异常。)