web.xml中 error-page的正确用法
2017-06-15 14:28
435 查看
最近在review别的team的代码,发现error-page没有被用的很好。
他们的web.xml中关于error-page的定义如下:
<!--errorpage handler -->
<error-page>
<error-code>404</error-code>
<location>/WEB-INF/jsp/errors/error.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/WEB-INF/jsp/errors/error.jsp</location>
</error-page>
<error-page>
<error-code>414</error-code>
<location>/WEB-INF/jsp/errors/error.jsp</location>
</error-page>
<error-page>
<error-code>505</error-code>
<location>/WEB-INF/jsp/errors/error.jsp</location>
</error-page>
<error-page>
<error-code>400</error-code>
<location>/WEB-INF/jsp/errors/error.jsp</location>
</error-page>
看样子貌似几乎所有常见的服务器端的异常都被覆盖到了,出现这些异常的话页面会到error.jsp中。
但是这样就够了吗, 显然是不够的,仔细阅读他们代码,会发现他们有很多异常都有可能被抛出来而没有得到非常妥当的处理。
比如说他们的CheckoutAddress类的fromHomeAddress()方法如下:
显然这个方法是没有正确处理异常的,因为传入的homeAddr入参可能为空,如果这样的话,那么所有点操作符都会抛NullPointerException,而这里显然没有对入参进行控制,而且代码中也没有对异常进行处理,我查看了下,所有调用这个方法的方法也都没有对异常进行处理。所以如果假设真正应用上线后遇到了一个homeAddr为空的地方,那么这段代码就会抛异常而不会继续走下去,没有好好处理的结果可能是灾难性的,前端用户会面对一大段异常文本而不知所措。
当然了,这段代码最好的方案还是对入参进行严格控制,并且在代码中吧异常直接处理掉,所谓“能自己处理就不要丢给上级” ,当然了,我们为了以防万一,还是必须在web.xml中定义一个 error-page选项,来把好最后一关,也就是就算真正出这个异常了,也会到出错页面,而不是一个无法控制的页面。
所以我们需要在web.xml中增加一个error-page 元素,如下:
这样应用就更加robust了。
本文出自 “平行线的凝聚” 的博客http://supercharles888.blog.51cto.com/609344/1338856
他们的web.xml中关于error-page的定义如下:
<!--errorpage handler -->
<error-page>
<error-code>404</error-code>
<location>/WEB-INF/jsp/errors/error.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/WEB-INF/jsp/errors/error.jsp</location>
</error-page>
<error-page>
<error-code>414</error-code>
<location>/WEB-INF/jsp/errors/error.jsp</location>
</error-page>
<error-page>
<error-code>505</error-code>
<location>/WEB-INF/jsp/errors/error.jsp</location>
</error-page>
<error-page>
<error-code>400</error-code>
<location>/WEB-INF/jsp/errors/error.jsp</location>
</error-page>
看样子貌似几乎所有常见的服务器端的异常都被覆盖到了,出现这些异常的话页面会到error.jsp中。
但是这样就够了吗, 显然是不够的,仔细阅读他们代码,会发现他们有很多异常都有可能被抛出来而没有得到非常妥当的处理。
比如说他们的CheckoutAddress类的fromHomeAddress()方法如下:
public static CheckOutAddress fromHomeAddress(HomeAddr homeAddr) { CheckOutAddress address = new CheckOutAddress(); address.setAddressId(String.valueOf(homeAddr.getId())); address.setCountryId(String.valueOf(homeAddr.getCountry().getId())); address.setCountryName(homeAddr.getCountry().getRegionName()); address.setDetailAddress(homeAddr.getDetailAddress()); address.setFirstName(homeAddr.getFirstName()); address.setLastName(homeAddr.getLastName()); address.setIsDefaultAddress(String.valueOf(homeAddr.getIsDefault())); address.setMobilePhone(homeAddr.getMobilePhone()); address.setCountryPhoneCode(homeAddr.getCountryPhoneCode()); address.setZipCode(homeAddr.getZipCode()); return address; }
显然这个方法是没有正确处理异常的,因为传入的homeAddr入参可能为空,如果这样的话,那么所有点操作符都会抛NullPointerException,而这里显然没有对入参进行控制,而且代码中也没有对异常进行处理,我查看了下,所有调用这个方法的方法也都没有对异常进行处理。所以如果假设真正应用上线后遇到了一个homeAddr为空的地方,那么这段代码就会抛异常而不会继续走下去,没有好好处理的结果可能是灾难性的,前端用户会面对一大段异常文本而不知所措。
当然了,这段代码最好的方案还是对入参进行严格控制,并且在代码中吧异常直接处理掉,所谓“能自己处理就不要丢给上级” ,当然了,我们为了以防万一,还是必须在web.xml中定义一个 error-page选项,来把好最后一关,也就是就算真正出这个异常了,也会到出错页面,而不是一个无法控制的页面。
所以我们需要在web.xml中增加一个error-page 元素,如下:
<error-page> <exception-type>java.lang.NullPointerException</exception-type> <location>/WEB-INF/jsp/errors/error.jsp</location> </error-page>
这样应用就更加robust了。
本文出自 “平行线的凝聚” 的博客http://supercharles888.blog.51cto.com/609344/1338856
相关文章推荐
- web.xml中 error-page的正确用法
- web.xml中 error-page的正确用法 推荐
- web.xml里的errorpage的用法
- web.xml中配置<error-page>标签不起作用的问题
- web.xml之welcome-file-list、error-page
- web.xml中的 error-page
- web.xml的<error-page>不起作用
- web.xml(7)_mime-mapping、welcome-file-list、error-page
- 在tomcat的web.xml文件中配置error-page
- 在web.xml中配置error-page
- web.xml中error-page的疑惑
- web.xml error-page 不起作用解决方案
- web.xml中error-page的元素
- WEB.XML error-page 配置错误页面
- web.xml中配置<error-page>标签不起作用的问题
- http 请求错误码,网站上的error-page可以web.xml中定义
- Jsp中errorPage使用及web.xml配置
- 在 web.xml中配置error-page(错误重定向)
- web.xml(7)_mime-mapping、welcome-file-list、error-page
- web.xml 中配置了error-page但不起作用问题