`
hdwangyi
  • 浏览: 183163 次
社区版块
存档分类
最新评论

在Web应用中使用检查异常还是运行异常

    博客分类:
  • Java
阅读更多
  在Java编程中,Sun推荐利用检查异常处理程序中的错误。检查异常类直接或间接地继承了java.lang.Exception,在继承树中不包含java.lang.RuntimeException。检查异常使得代码中充满了try...catch...finally之类的语句,被很多人认为是对代码的一种“毒化”,所以,多数人的想法恰恰和Sun的建议相反,推荐使用运行时刻的异常处理机制。运行时刻异常类直接或间接地继承了java.lang.RuntimeException,处理这种异常类的实例并不强制需要在代码中加入try...catch之类的语句,从而使得代码变得清晰明了,增加了可读性。

  从本质上看,检查异常代表了一种“可恢复”的问题,也就是说,在出现了异常之后,程序还是可以继续运行下去的;而运行时刻异常则代表严重的问题,即出现运行时刻异常,往往代表程序出了严重的问题,不能再继续运行。Sun在设计Java的语言的时候,就是出于这种考虑,推荐程序员使用检查异常的。如果我们把异常看成是一种对方法在调用中有可能出现的问题的一种声明,无疑检查异常在这时更能让代码的阅读者明确该方法的所有功能。检查异常的麻烦之处在于调用时繁琐的try...catch...finally语法。到底应该使用那种异常,对此每个人都有不同的看法,而且在Java世界中总能引发很大的争议。我们在具体编码中,应该根据自身的运行环境和技术要求来确定。对于Web这个应用领域,对于运行时刻异常的使用要更为慎重。

  我们知道,Java的Web应用最终都要归为Servlet的运行,Servlet本身就在service、doPost、doGet等方法中抛出了ServletException和IOException,这两个都是检查异常。如果在doPost、doGet等方法中有Runtime异常实例抛出,造成的后果是比较严重的,它会使当前的Web服务器销毁掉对应的Servlet实例,整个Web站点将变得不可用,只有重新载入当前的Web程序才能恢复正常,这相当于整个Web站点当掉了,在实际运行中是不被允许的。

  现在很多的一些框架,为了便于程序员的使用,都采用了运行时刻异常,比如Spring框架就是这样,如果我们不注意,让Spring的异常实例出现在最终的Servlet中,这是一种很危险的错误。实际上,很多初学者在学习Spring时,往往被浏览器中出现的404错误感到莫名其妙,其实就是由于配置文件等原因,造成Spring抛出运行时刻异常,导致Servlet的实例被销毁,从而使得对应的页面不可用造成的。
1
0
分享到:
评论
2 楼 lcllcl987 2008-10-20  
比较有道理
RuntimeExecption貌似有滥用的趋势.
1 楼 dayang2001911 2008-10-19  
不太懂
放点代码或者什么的吧

相关推荐

    WEB应用基线检查与安全加固.pptx

    为了保障WEB应用的安全稳定运行,进行WEB应用基线检查与安全加固是非常必要的。 本篇文章将详细介绍如何针对常见的WEB应用服务器(如Apache、Tomcat、IIS)和服务端环境(如PHP、phpMyAdmin)进行安全加固,确保WEB...

    Java Web应用中常见的错误和异常问题处理.zip

    在Java Web应用开发中,错误和异常的处理是不可或缺的一部分,因为它们直接影响到程序的稳定性和用户体验。本文将深入探讨Java Web应用中遇到的一些常见错误和异常问题,并提供相应的处理策略。 1. **Servlet和JSP...

    在web.xml中设置错误处理页面.docx

    本文将讲述如何在 web.xml 文件中使用 `<error-page>` 元素来设置错误处理页面,并结合实验结果,分析 JSP 的基本语法和错误处理机制。 web.xml 文件的 `<error-page>` 元素 在 JavaWeb 应用程序中,web.xml 文件...

    部署测试时遇到"应用程序中的服务器错误”的解决方法一

    在“应用程序中的服务器错误”中,异常详细信息是指 System.Web.HttpException 类型的异常,这个异常是由于 ConfigData 类型的初始值设定项引发的。这个异常的堆栈跟踪信息可以帮助开发者了解错误的原因和位置。 ...

    web 应用程序测试方法和测试技术详解.txt

    3. **性能测试**:评估Web应用在高并发、大数据量下的表现,如响应时间、吞吐量、资源消耗等,确保应用在实际使用中的稳定性和效率。 4. **兼容性测试**:考虑到不同的操作系统、浏览器版本、屏幕尺寸等因素,测试...

    tomcat健康检查脚本文件异常发送邮件通知.rar

    在这个场景中,脚本会定期执行一系列检查,例如通过查看Tomcat的日志文件、检查进程状态或者监听端口是否正常来判断Tomcat是否运行正常。如果检测到任何异常,比如Tomcat服务挂起或者响应超时,脚本会触发邮件通知...

    Python异常处理(课件)

    常见的Python异常包括IndexError(索引超出范围)、TypeError(操作符或函数应用于不兼容的类型)、KeyError(访问字典中不存在的键)、ValueError(值错误,如将非数字字符串转换为整数)、NameError(使用了未定义...

    Web应用漏洞分析及防御解决方案研究

    Web应用安全是网络安全的重要组成部分,随着Web技术的普及,其面临的威胁也在不断增加。通过深入理解Web应用漏洞及其影响,结合有效的防御策略,可以显著提高Web应用的安全性。开发人员应关注代码安全性,运维人员则...

    论文_基于Web应用的测试研究与应用

    《论文_基于Web应用的测试研究与应用》探讨了在软件开发领域中,尤其是Web应用程序的测试策略、方法和技术。Web应用测试是确保系统稳定、可靠、高效运行的关键环节,涵盖了多个方面,如功能测试和性能测试。 功能...

    明御WEB应用防火墙产品配置手册V3.0.4.0.doc

    明御Web应用防火墙(简称明御WAF),是一款由杭州安恒信息技术有限公司开发的安全产品。该产品主要用于保护Web应用免受各种攻击威胁,如SQL注入、XSS跨站脚本攻击等。 #### 1.2 产品功能介绍 - **攻击防御**:提供...

    Ruby-Watir在Ruby中Web应用程序测试

    Ruby-Watir是一种开源自动化测试框架,专门用于在Ruby编程语言中进行Web应用程序的测试。它允许开发者通过编写Ruby代码来模拟用户与浏览器的交互,从而实现端到端的测试。这个工具的名字“Watir”是“Web ...

    如何在WPF应用程序中通过HttpClient调用Web API

    以下是在WPF中使用HttpClient异步调用Web API的基本步骤: 1. **导入必要的命名空间**:在WPF项目中,你需要引入`System.Net.Http`命名空间来使用HttpClient。 2. **创建HttpClient实例**:在你的代码中,创建一个...

    WSTG(Web 应用程序安全测试)OWASP - 思维导图.pdf

    在网络安全领域,渗透测试是确保Web应用程序安全的关键步骤。OWASP(开放网络应用安全项目)的Web应用程序安全测试指南(WSTG)提供了一套全面的方法论,帮助测试人员发现并修复潜在的安全漏洞。以下是对这些知识点...

    web应用程序测试方法和测试技术.pdf

    3. **兼容性测试**:Web应用应能在不同的浏览器、操作系统、设备上正常运行。测试需覆盖各种组合,确保用户无论使用何种环境都能获得一致的体验。例如,测试不同版本的Chrome、Firefox、Safari和Edge,以及移动设备...

    在SpringBoot中使用logback优化异常堆栈的输出.doc

    通过以上步骤,我们成功地在SpringBoot中使用logback和`ogstash-logback-encoder`优化了异常堆栈的输出,使其更简洁、更具针对性。这将帮助开发者更快地定位问题,提高开发效率。完整的代码示例可以参考提供的链接。...

    java web start教程

    另外,JWS支持离线使用,用户在初次下载后可以在没有网络连接的情况下运行程序,后续启动时会自动检查并下载更新。 JWS的安全性基于Java 2平台,该平台提供了安全沙箱机制,限制了未经许可的代码访问系统资源,保护...

    Web应用中并发控制的实现.pdf

    在Web应用中,并发控制是确保数据一致性与正确性的关键技术。随着B/S架构的广泛应用,比如电商系统、售票系统等,并发问题愈发突出。在传统的C/S架构中,长事务处理可以有效解决并发问题,但在Web环境中,由于HTTP...

    Web Api使用详解(全部实例讲解,可直接运行看效果),可直接运行

    开发Web API项目,首先需要在Visual Studio中创建一个ASP.NET Web应用程序,然后选择“Web API”模板。安装NuGet包Microsoft.AspNet.WebApi.Core,用于包含Web API的核心组件。 3. **控制器(Controllers)** 在...

    Ajax 中的Sys.Webforms.PageRequestManagerParseErrorException异常处理

    例如,如果你在UpdatePanel的事件处理程序中使用了`Response.Redirect()`,那么应该改变逻辑,避免在异步请求中进行页面重定向。如果确实需要进行页面跳转,可以考虑将逻辑移到非异步的按钮点击事件或其他适当的...

Global site tag (gtag.js) - Google Analytics