servlet 异常处理的另一个思路

J-will 发布于 2011/09/03 08:05
阅读 1K+
收藏 0

我最近在写一个小小的servlet小网站,我在网上看到一些人写得关于servlet异常处理的方法,一种很常见的方法就是在servlet里面用try块包围指定的方法,在catch块里重定向到错误页

 比如  

try{
    someMethod();
}catch(Exception){
    重定向到错误页
}

可是这样有缺点就是,每次遇到这样的方法,都要重复的去写这样的try catch,代码上冗余度很大。

我又了解到另一种异常处理的方法

就是在web.xml里面配置,比如

<error-page>
<exception-type>java.io.FileNotFoundException</exception-type>
<location>/ExcepHandler</location>

</error-page>

这样当servlet抛出异常后,由应用服务器根据异常类型重定向到错误页。这样就不用在源码里面写大量重复的try catch代码了

但是这种处理方法有一个局限,那就是异常类型必须是运行时异常,servlet的doGet和doPost方法只会抛出ServletException和IOException,所以我现在有一个想法,就是我把所有的自定义的异常类型从RuntimeException继承下来,把异常类型都作为运行时异常,通过配置web.xml由服务器来完成重定向的工作。

不知道大家平时对重定向错误页是如何处理的,对我这种做法有什么想法。

加载中
0
红薯
红薯
任何异常发生最终都会导致 500 错误,不如直接定义一个 500 错误处理页面,省得在 web.xml 定义太多的异常处理
幻影浪子
幻影浪子
回复 @瑶瑶你还好吗 : 在异常页面里输出错误信息啊
相信你自己
相信你自己
这样不好啊,那怎样区分具体什么地方出了错
0
J-will
J-will

引用来自“红薯”的答案

任何异常发生最终都会导致 500 错误,不如直接定义一个 500 错误处理页面,省得在 web.xml 定义太多的异常处理
据我所知,只有运行时的异常才会引发500错误吧,比如NullPonintException 等以及doGet、doPost的ServletException和IOException。java强制异常处理,不是上面说的两种异常应该没有机会抛出给容器吧,其他的异常一般必须在doGet和doPost的方法体内处理好了,这样就会导致大量冗余的try、catch重定向代码
0
J-will
J-will

引用来自“J-will”的答案

引用来自“红薯”的答案

任何异常发生最终都会导致 500 错误,不如直接定义一个 500 错误处理页面,省得在 web.xml 定义太多的异常处理
据我所知,只有运行时的异常才会引发500错误吧,比如NullPonintException 等以及doGet、doPost的ServletException和IOException。java强制异常处理,不是上面说的两种异常应该没有机会抛出给容器吧,其他的异常一般必须在doGet和doPost的方法体内处理好了,这样就会导致大量冗余的try、catch重定向代码
红薯大哥我错了。。。现在懂了
0
jobell
jobell

我是自己写的架构,在代码中直接抛出来,在框架中进行处理了。
当然框架中对异常的处理是以plugin的方式。有默认的,也可以自定义。

返回顶部
顶部