开发者社区> 技术小阿哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

JavaWeb前台异常处理

简介:
+关注继续查看
在做Java Web程序时候,如果出错了,常常会在页面上打印出错误的堆栈内存信息,在开发阶段对调试程序很有帮助,但是在运营环境下,这样的处理很不友好,非开发人员看了都会傻眼。
 
这里给出一个简单的处理方式,使用错误页面来处理。
 
一、创建两个常见的HTML错误信息页面:
 
404.html
    <body> 
        所访问的资源不存在:对不起,所请求的资源不存在! <br> 
    </body>
 
500.html
    <body> 
        服务器内部错误:对不起,服务器忙! <br> 
    </body>
 
二、配置web.xml
<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.4"    
  xmlns="http://java.sun.com/xml/ns/j2ee"    
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee    
  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
    <servlet> 
        <description>This is the description of my J2EE component</description> 
        <display-name>This is the display name of my J2EE component</display-name> 
        <servlet-name>ErrServlet</servlet-name> 
        <servlet-class>lavasoft.errtest.ErrServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
        <servlet-name>ErrServlet</servlet-name> 
        <url-pattern>/servlet/ErrServlet</url-pattern> 
    </servlet-mapping> 
    <welcome-file-list> 
        <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 
    <error-page> 
      <error-code>404</error-code> 
      <location>/404.html</location> 
    </error-page> 
    <error-page> 
      <error-code>500</error-code> 
      <location>/500.html</location> 
    </error-page> 
</web-app>
 
三、创建一个测试的Servlet,用来抛500错误的用的,呵呵。
 
package lavasoft.errtest; 

import java.io.IOException; 
import java.io.PrintWriter; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class ErrServlet extends HttpServlet { 

  public void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 

    response.setContentType("text/html"); 
    throw new RuntimeException("------");    
  } 
}
 
四、测试
 
1、当访问不存在的资源时候,服务器会返回404错误状态,这样会自动转向404对应的错误页面404.html,将其发送给客户端。
 
2、当服务器处理错误时候,会返回500错误状态码,这样自动转向500对应的错误页面500.html,将其发送给客户端。
 
这样,不费多大劲,就把异常的不友好问题解决了!
当然,这仅仅是最简单的最懒惰的一种处理方式,还有一种方式值得推荐:那就是在有好提示的页面不直接显示错误堆栈信息,只有当请求查看错误详细信息时候才点击才显示出来,这个效果是通过js实现的。


本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/280019,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
java中异常注意的细节2
class A extends Exception{ A(){ super(); } A(String msg){ super(msg); } } class B extends A{ B(){ super()...
474 0
java中异常注意的细节1
/* public class Test{ public static void main(String[] args){ int i=0; try{ func();//区别就是该函数抛出的异常被封装了,外界不知道到底会不会发生该异常 System.
542 0
Java多线程那些事,对Java并发编程2w余字的总结,超详细(从入门到完全掌握)
Java多线程那些事,对Java并发编程2w余字的总结,超详细(从入门到完全掌握)
86 0
java多线程中的死锁、活锁、饥饿、无锁都是什么鬼?
死锁、活锁、饥饿是关于多线程是否活跃出现的运行阻塞障碍问题,如果线程出现了这三种情况,即线程不再活跃,不能再正常地执行下去了。
71 0
五分钟带你玩转多线程(一)java多线程基础知识简介
线程概念 进程:是一个执行中的程序,如打开网易云音乐,网易云音乐就是一个进程 线程:是进程的组成,一个进程包含多个线程,是jvm最小调度单元。如网易云音乐听歌是一个线程,评价是一个线程。
53 0
13688
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载