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

在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  
不太懂
放点代码或者什么的吧

相关推荐

    PHP和MySQL Web开发第4版pdf以及源码

    17.5 在Apache的.htaccess文件中使用基本身份验证 17.6 使用mod_auth_mysql身份验证 17.6.1 安装mod_auth_mysql 17.6.2 使用mod_auth_mysql 17.7 创建自定义身份验证 17.8 进一步学习 17.9 下一章 第18章 ...

    PHP和MySQL WEB开发(第4版)

    17.5 在Apache的.htaccess文件中使用基本身份验证 17.6 使用mod_auth_mysql身份验证 17.6.1 安装mod_auth_mysql 17.6.2 使用mod_auth_mysql 17.7 创建自定义身份验证 17.8 进一步学习 17.9 下一章 第18章 使用PHP和...

    PHP和MySQL Web开发第4版

    17.5 在Apache的.htaccess文件中使用基本身份验证 17.6 使用mod_auth_mysql身份验证 17.6.1 安装mod_auth_mysql 17.6.2 使用mod_auth_mysql 17.7 创建自定义身份验证 17.8 进一步学习 17.9 下一章 第18章 ...

    超级有影响力霸气的Java面试题大全文档

     异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获...

    C#微软培训资料

    18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...

    asp.net服务器上几种常见异常的解决方案.

     服务器应用程序不可用 您试图在此 Web 服务器上访问的 Web 应用程序当前不可用。请点击 Web 浏览器中的“刷新”按钮重试您的请求。 管理员注意事项: 详述此特定请求失败原因的错误信息可在 Web 服务器的系统事件...

    ioBroker.iqontrol:可视化的快速Web应用程序

    在任何浏览器中运行。 易于设置,尽管它是完全可定制和响应的。 该适配器使用Sentry库自动向开发人员报告异常和代码错误。 有关更多详细信息以及如何禁用错误报告的信息,请参见! Sentry报告从js-controller 3.0...

    J2EE中文版指南 CHM格式 带全文检索

    在JSP中使用对象 181 隐式对象 181 特定应用程序对象 181 共享对象 182 JSP scripting 元素 182 声明 182 脚本(scriptlets) 183 表达式 184 在JSP页面中包含内容 185 转换控制到另一网络组件 185 参数元素 185 ...

    ActionScript开发人员指南中文版

    在ActionScript中使用XML的示例:从Internet加载RSS数据 第章:使用本机JSON功能 JSONAPI概述 定义自定义JSON行为 第章:处理事件 事件处理基础知识 ActionScript事件处理与早期版本事件处理的不同之处 事件流 事件...

    asp.net知识库

    ASP.NET 2.0构建动态导航的Web应用程序(TreeView和Menu ) 体验.net2.0的优雅(3) -- 为您的 SiteMap 添加 控制转发功能 GridView控件使用经验 ASP.NET 2.0:弃用 DataGrid 吧,有新的网格控件了! ASP.NET2.0控件...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     3.6.4 把helloapp应用作为Java Web应用运行  3.7 小结  3.8 思考题 第4章 hbm2java和hbm2ddl工具  4.1 创建对象-关系映射文件  4.1.1 定制持久化类  4.1.2 定制数据库表  4.2 建立项目的目录结构  4.3 运行...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     3.6.4 把helloapp应用作为Java Web应用运行  3.7 小结  3.8 思考题 第4章 hbm2java和hbm2ddl工具  4.1 创建对象-关系映射文件  4.1.1 定制持久化类  4.1.2 定制数据库表  4.2 建立项目的目录结构  4.3 运行...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     3.6.4 把helloapp应用作为Java Web应用运行  3.7 小结  3.8 思考题 第4章 hbm2java和hbm2ddl工具  4.1 创建对象-关系映射文件  4.1.1 定制持久化类  4.1.2 定制数据库表  4.2 建立项目的目录结构  4.3 运行...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     3.6.4 把helloapp应用作为Java Web应用运行  3.7 小结  3.8 思考题 第4章 hbm2java和hbm2ddl工具  4.1 创建对象-关系映射文件  4.1.1 定制持久化类  4.1.2 定制数据库表  4.2 建立项目的目录结构  4.3 运行...

    udb3-silex:UDB3 Silex Web应用程序

    您可以使用以下作曲家脚本来运行所有配置项检查: composer ci或单独运行它们: composer test测试composer phpstan进行静态分析composer cs用于检测违反编码标准的情况composer cs-fix用于解决违反编码标准的情况...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    ASP.NET 2.0的发布,使Web应用程序的开发又前进了一大步。这个新版本增加了大量的新功能,减少了编写常见应用程序所需的代码量。 ASP.NET 2.0新增了50多个新服务器控件,类的数量也翻了一倍,其他许多方面也有很...

    IIS6.0 IIS,互联网信息服务

    IIS有默认的端口设置,只要稍有计算机知识的人都会记得这些端口的,要破解的话就十分的方便,所以尽量不要使用21这个默认端口号,并启用日志,以便FTP服务出现异常时检查。 [编辑本段]对IIS服务的远程管理  三、对...

Global site tag (gtag.js) - Google Analytics