- 浏览: 1504506 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (798)
- struts2 (42)
- servlet (20)
- quartz (4)
- jquery & ajax (24)
- tomcat (5)
- javascript (15)
- struts1 (8)
- 搜索关键字及链接 (3)
- fckeditor (3)
- Apache (5)
- spring (22)
- linux (3)
- 企业应用 (8)
- 综合应用 (13)
- 服务器 (2)
- 数据库 (85)
- 性能调优 (21)
- 网络应用 (15)
- 缓存技术 (8)
- 设计模式 (39)
- 面试题 (7)
- 程序人生&前辈程序员 (29)
- java基础 (59)
- hibernate (75)
- log4j (4)
- http (11)
- 架构设计 (28)
- 网页设计 (12)
- java邮件 (4)
- 相关工具 (11)
- ognl (7)
- 工作笔记 (18)
- 知识面扩展 (12)
- oracle异常 (1)
- 正则表达式 (2)
- java异常 (5)
- 项目实践&管理 (1)
- 专业术语 (11)
- 网站参考 (1)
- 论坛话题 (2)
- web应用 (11)
- cxf&webservice (22)
- freemarker (3)
- 开源项目 (9)
- eos (1)
- ibatis (6)
- 自定义标签 (3)
- jsp (3)
- 内部非公开文档(注意:保存为草稿) (0)
- 国内外知名企业 (2)
- 网店 (3)
- 分页 (1)
- 消费者习惯 (2)
- 每日关注 (1)
- 商业信息 (18)
- 关注商业网站 (1)
- 生活常识 (3)
- 新闻 (2)
- xml&JSON (5)
- solaris (1)
- apache.common (3)
- BLOB/CLOB (1)
- lucene (2)
- JMS (14)
- 社会进程 (8)
- SSH扩展 (2)
- 消费心理 (1)
- 珠三角 (1)
- 设计文档 (1)
- XWork&webwork (1)
- 软件工程 (3)
- 数据库及链接 (1)
- RMI (2)
- 国内外知名企业&人物 (1)
最新评论
-
司c马:
简介易懂、
OutputStream和InputStream的区别 -
在世界的中心呼喚愛:
解决我的问题
Java获取客户端的真实IP地址 -
bo_hai:
都是些基本的概念呀!
SSO -
tian_4238:
哥们,你也是搞水利这块的吧。
巧用SQLQuery中的addScalar -
loveEVERYday:
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp小结
以前,我觉得编程语言中最让人不解的部分就是它能够创建错误。当时我对Java语言中的throw关键字的第一反应就是“啊,这也太傻了,为什么我们想要引发一个错误(error)?”我觉得错误是我的敌人,应当避免的,所以创建错误是毫无用处甚至是危险的。我认为在JavaScript中加入这样的关键字是多此一举。但随着我编程经验的丰富,我逐渐变成了throw我的error粉丝。合理的使用它们会让对代码的调试和维护大大简化。
在编程的时候,Error通常出现在不期望的事情发生时。可能是传入函数的参数值不正确,或者是运算符的操作数不合法。为此编程语言定义了一个基本的规则:当上述情况发生时,就产生一个错误来让编程人员对代码进行修复。如果这些错误不被抛出或反馈给你,那么调试程序几乎是不可能的。如果所有的错误都“悄悄地”发生,那么你很难在第一时间发现问题所在,并将其修复。因此Error是开发者的朋友,而不是敌人。
Error的问题所在是它们会在错误的时间和错误的地点发生。更糟的是,默认的错误信息通常晦涩难懂,很难解释哪里出了问题。JavaScirpt的错误信息更是不包含任何有价值的信息,而且还很隐蔽(尤其是在IE里运行时)。想象一下如果能有这样的错误提示出现“因为某件事情发生导致某个函数调用失败”,那么立刻我们的调试任务就变得简单了,这就是throw自己的error的好处。
我们可以把error想象成内嵌的异常类。在代码的某个特定的地点估计异常的发生肯定要比在所有的地方等待异常的发生要简单。这不光在代码编写中,在产品设计中也是一个普遍认同的原则。就像在轿车上设计了挤压区域和框架,以便在受到撞击时会以期望的方式发生变形。因为知道了框架在受到撞击时会如何变形,哪些零件会失效,这样制造商就可以造出保证乘客安全的汽车。我们的代码也可以按照这样的思想编写。
虽然最近几年JavaScript有了很多进步,但是相比于其它语言的开发者,JavaScript开发者仍然只有少得可怜的调试工具。因此在JavaScript中throw error就显得比其它语言更有价值。我们可以用throw关键字来抛出一个对象。我们可以抛出任何类型的对象,不过Error对象是最常用的:
throw new Error("Something bad happened.")
当我们用这样的方式抛出错误,而这个错误又不被try-catch捕获时,浏览器就会用其通常的方式显示上面的错误信息(Something bad happened)。在IE里会在浏览器的左下角出现一个小图标,当双击图标时会弹出一个带着上面错误提示的对话框;安装有Firebug插件的火狐浏览器会在控制台显示错误信息;Safar和Chrome会在Web Inspector中显示;Opera会在错误控制台显示。一句话,它们会像你没有抛出错误时一样处理。但不同的是它会通过浏览器向你提供具体的信息,而不是一个发生错误的行列号。你可以为错误信息加入任何需要的信息,来帮你成功解决问题。我建议在错误信息中提供发生错误的函数名称以及错误原因。看下面这个函数:
function addClass(element, className){element.className += " " + className;}
这个函数的功能是向一个给定的element加入新的CSS class(这在JavaScript中非常普遍)。但如果element是null的时候会发生什么?你会得到一个这样的错误提示“object expected”,很隐晦。然后你需要查看执行堆栈(如果浏览器支持这个功能)来准确定位错误的源头。如果我们抛出一个错误调试就变得简单了:
function addClass(element, className){if (element != null && typeof element.className == "string"){element.className += " " + className;} else {throw new Error("addClass(): First arg must be a DOM element.");}}
先不讨论如何精确的判断对象是否是一个DOM element,这个方法现在能够在非法的element参数传入时提供一个更明确的错误信息。看到了如此详尽的错误描述你就能立刻找到错误的源头了。我习惯把throw error看作是贴一个任务贴纸,告诉我错误的原因。
懂得了如何throw error只是事情的一半;懂得何时throw error则是另一半。因为JavaScript并不对参数进行类型检查,许多开发者都错误的认为他们应该在所有的函数中进行该检查。那样的话是不实际的,而且会降低脚本的执行效率。问题的关键在于找到最有可能出错的代码部分,并且只在那里throw error.一句话就是只在已经发生error的地方throw error.
如果一个函数只被一个已知的实体调用,那么错误检查基本上是没有必要的(例如私有函数就是这样);如果你不能事先确定所有函数被调用的地点,那么你需要进行错误检查并throw自己的error.throw error最好的地方是功能函数,那些是脚本环境基本组成部分的,而且可以在任意地点被调用的函数。JavaScript的库函数就是这样的例子。
所有JavaScript的库函数都应当为已知的错误条件从它们的公共接口throw error.对于YUI,jQuery以及Dojo等等,我们无法确定会在何时何处调用它们的库函数。所以当你犯错时对你进行提示就是这些库函数的任务。为什么呢?因为你不可能到库函数内部去找出错误所在。error的调用堆栈应当终止于库函数接口,不要再深入。没有什么比在12层函数嵌套中寻找错误更遭的事了;库函数开发人员有责任预防这种事情的发生。
这一条同样适用于私有的JavaScript库函数。许多Web应用程序都有它们自己专属的JavaScript库,可能是通过这些库来构建的,也可能是用库来代替公共的操作。库函数的作用是降低开发难度,这是通过向人们提供其抽象表达而不是复杂的实现细节来实现的。throw error可以让这些复杂的实现隐藏在安全的地方不被开发者发现。
JavaScript同样提供了try-catch语句,用来在浏览器处理之前捕获被throw的error.开发者常常会为到底是仅仅throw error还是用try-catch将其捕获而犹豫不决。我们应当只在程序栈的最底层throw error,就像前面提到的,最典型的就是JavaScript库函数。所有应用程序都应当在逻辑上具有处理error的能力,因此应当在底层模块中捕获error.
在应用程序逻辑中我们总是知道为什么要调用某个函数,因此它们非常适合处理error.有一点要引起注意,就是永远不要在try-catch结构中使用空的catch语句;你应当用某种方法处理错误。这钟处理在开发中和最终生产时会有些不同,但必须进行处理。当错误发生时,不应当仅仅将其包裹在try-catch里不管——这是掩盖错误而不是解决错误。
在JavaScript中throw error是一门艺术。在代码中找到适当的throw error的地点会花费一些时间。不过一旦你找到了这些地点,你的调试时间就会大大降低,而你对代码的满意度会获得提升。
文章转载自网管网:http://www.bitscn.com/pdb/java/200904/161058.html
在编程的时候,Error通常出现在不期望的事情发生时。可能是传入函数的参数值不正确,或者是运算符的操作数不合法。为此编程语言定义了一个基本的规则:当上述情况发生时,就产生一个错误来让编程人员对代码进行修复。如果这些错误不被抛出或反馈给你,那么调试程序几乎是不可能的。如果所有的错误都“悄悄地”发生,那么你很难在第一时间发现问题所在,并将其修复。因此Error是开发者的朋友,而不是敌人。
Error的问题所在是它们会在错误的时间和错误的地点发生。更糟的是,默认的错误信息通常晦涩难懂,很难解释哪里出了问题。JavaScirpt的错误信息更是不包含任何有价值的信息,而且还很隐蔽(尤其是在IE里运行时)。想象一下如果能有这样的错误提示出现“因为某件事情发生导致某个函数调用失败”,那么立刻我们的调试任务就变得简单了,这就是throw自己的error的好处。
我们可以把error想象成内嵌的异常类。在代码的某个特定的地点估计异常的发生肯定要比在所有的地方等待异常的发生要简单。这不光在代码编写中,在产品设计中也是一个普遍认同的原则。就像在轿车上设计了挤压区域和框架,以便在受到撞击时会以期望的方式发生变形。因为知道了框架在受到撞击时会如何变形,哪些零件会失效,这样制造商就可以造出保证乘客安全的汽车。我们的代码也可以按照这样的思想编写。
虽然最近几年JavaScript有了很多进步,但是相比于其它语言的开发者,JavaScript开发者仍然只有少得可怜的调试工具。因此在JavaScript中throw error就显得比其它语言更有价值。我们可以用throw关键字来抛出一个对象。我们可以抛出任何类型的对象,不过Error对象是最常用的:
throw new Error("Something bad happened.")
当我们用这样的方式抛出错误,而这个错误又不被try-catch捕获时,浏览器就会用其通常的方式显示上面的错误信息(Something bad happened)。在IE里会在浏览器的左下角出现一个小图标,当双击图标时会弹出一个带着上面错误提示的对话框;安装有Firebug插件的火狐浏览器会在控制台显示错误信息;Safar和Chrome会在Web Inspector中显示;Opera会在错误控制台显示。一句话,它们会像你没有抛出错误时一样处理。但不同的是它会通过浏览器向你提供具体的信息,而不是一个发生错误的行列号。你可以为错误信息加入任何需要的信息,来帮你成功解决问题。我建议在错误信息中提供发生错误的函数名称以及错误原因。看下面这个函数:
function addClass(element, className){element.className += " " + className;}
这个函数的功能是向一个给定的element加入新的CSS class(这在JavaScript中非常普遍)。但如果element是null的时候会发生什么?你会得到一个这样的错误提示“object expected”,很隐晦。然后你需要查看执行堆栈(如果浏览器支持这个功能)来准确定位错误的源头。如果我们抛出一个错误调试就变得简单了:
function addClass(element, className){if (element != null && typeof element.className == "string"){element.className += " " + className;} else {throw new Error("addClass(): First arg must be a DOM element.");}}
先不讨论如何精确的判断对象是否是一个DOM element,这个方法现在能够在非法的element参数传入时提供一个更明确的错误信息。看到了如此详尽的错误描述你就能立刻找到错误的源头了。我习惯把throw error看作是贴一个任务贴纸,告诉我错误的原因。
懂得了如何throw error只是事情的一半;懂得何时throw error则是另一半。因为JavaScript并不对参数进行类型检查,许多开发者都错误的认为他们应该在所有的函数中进行该检查。那样的话是不实际的,而且会降低脚本的执行效率。问题的关键在于找到最有可能出错的代码部分,并且只在那里throw error.一句话就是只在已经发生error的地方throw error.
如果一个函数只被一个已知的实体调用,那么错误检查基本上是没有必要的(例如私有函数就是这样);如果你不能事先确定所有函数被调用的地点,那么你需要进行错误检查并throw自己的error.throw error最好的地方是功能函数,那些是脚本环境基本组成部分的,而且可以在任意地点被调用的函数。JavaScript的库函数就是这样的例子。
所有JavaScript的库函数都应当为已知的错误条件从它们的公共接口throw error.对于YUI,jQuery以及Dojo等等,我们无法确定会在何时何处调用它们的库函数。所以当你犯错时对你进行提示就是这些库函数的任务。为什么呢?因为你不可能到库函数内部去找出错误所在。error的调用堆栈应当终止于库函数接口,不要再深入。没有什么比在12层函数嵌套中寻找错误更遭的事了;库函数开发人员有责任预防这种事情的发生。
这一条同样适用于私有的JavaScript库函数。许多Web应用程序都有它们自己专属的JavaScript库,可能是通过这些库来构建的,也可能是用库来代替公共的操作。库函数的作用是降低开发难度,这是通过向人们提供其抽象表达而不是复杂的实现细节来实现的。throw error可以让这些复杂的实现隐藏在安全的地方不被开发者发现。
JavaScript同样提供了try-catch语句,用来在浏览器处理之前捕获被throw的error.开发者常常会为到底是仅仅throw error还是用try-catch将其捕获而犹豫不决。我们应当只在程序栈的最底层throw error,就像前面提到的,最典型的就是JavaScript库函数。所有应用程序都应当在逻辑上具有处理error的能力,因此应当在底层模块中捕获error.
在应用程序逻辑中我们总是知道为什么要调用某个函数,因此它们非常适合处理error.有一点要引起注意,就是永远不要在try-catch结构中使用空的catch语句;你应当用某种方法处理错误。这钟处理在开发中和最终生产时会有些不同,但必须进行处理。当错误发生时,不应当仅仅将其包裹在try-catch里不管——这是掩盖错误而不是解决错误。
在JavaScript中throw error是一门艺术。在代码中找到适当的throw error的地点会花费一些时间。不过一旦你找到了这些地点,你的调试时间就会大大降低,而你对代码的满意度会获得提升。
文章转载自网管网:http://www.bitscn.com/pdb/java/200904/161058.html
发表评论
-
JavaScript经典效果集锦
2011-06-14 10:10 1320JavaScript经典效果集锦.txt -
浏览器状态栏信息来回移动
2011-06-09 22:49 1303附件 -
常用函数手册
2011-06-06 22:32 12451、http://www.phpx.com/man/dhtml ... -
扩展基于prototype的validation.js
2010-10-29 08:40 1264validation.js是一个基于prototype表单前端 ... -
js大全
2010-09-29 10:42 1690以下方法仅供参考,若用js实现可能更简单。 js大全 ... -
常用js语句——大全
2010-09-29 09:56 14791.document.write("" ... -
test 方法
2010-09-20 20:57 1195test 方法 返回一个 Boolean ... -
JavaScript最常用的55个经典技巧
2010-07-26 14:10 13581. oncontextmenu="window.e ... -
知识小点心
2010-07-16 13:31 12661、<script src="<%=re ... -
this 用法
2010-07-15 09:03 1240this是JavaScript中功能最强大的关键字之一。不 ... -
JavaScript window.setTimeout() 的详细用法
2010-06-17 10:30 1538例子: <script type="text ... -
javascript中的中文字符串比较
2010-06-17 10:13 1604使用如下方法if("中文比较".charC ... -
文本框设置默认值颜色
2010-06-17 10:06 3024<!DOCTYPE html PUBLIC " ... -
13个增强Web设计界面的Javascript脚本
2010-06-12 14:15 1458Javascript能让Web设计更具交互性、更美观和更方便的 ...
相关推荐
Java异常处理是编程中至关重要的一个环节,它用于在程序执行过程中捕获并处理错误情况。异常机制使得程序能够优雅地处理错误,而不是因为意外情况而突然终止。在这个例子中,我们将探讨如何自定义异常以及如何在Java...
Java异常处理是Java编程语言中的一个关键特性,它关乎到程序的健壮性和可靠性。Java异常处理机制使得程序在遇到错误或不正常情况时能够优雅地处理问题,而不是突然崩溃,这对于任何Java开发者来说都是必须掌握的核心...
Java异常机制是Java语言中用于处理程序运行时发生的错误的一种机制。它为错误提供了对象化的处理方式,使得程序可以更加健壮、易于维护。异常处理的核心在于能够使程序在遇到错误时不会直接崩溃,而是可以执行一段...
此外,还可以利用finally块来确保资源的正确释放,或者使用throws关键字将异常向上抛出,由调用者处理。 总之,Java的异常处理是一个平衡稳定性和性能的过程。开发者需要根据程序的需求和逻辑,选择最佳的异常处理...
本章主要讲解Java中的异常处理机制,包括异常的分类、抛出、捕获以及自定义异常。 异常在Java中被表示为`Exception`类及其子类的实例。这些异常分为两大类:检查性异常(Checked Exceptions)和运行时异常...
- **IOException**、**SQLException**等:具体的编译时异常,需要在方法中捕获或声明抛出。 - **Error**:程序无法处理的错误,如内存耗尽、虚拟机错误等。 #### 四、异常处理示例 下面是一个简单的异常处理示例...
例如,如果父类的方法声明中抛出`IOException`,那么子类覆盖该方法时,可以抛出`IOException`或者其子类如`FileNotFoundException`,但不能抛出更广泛的异常类型如`Exception`。 综上所述,Java的异常处理机制是...
### Java异常与错误处理 #### 引言 Java设计的核心理念之一是“结构不佳的代码将不能运行”,这意味着尽可能在...在实际开发中,合理利用异常处理,可以有效预防和管理运行时错误,构建更加稳定、高效的应用系统。
总之,精通Java异常处理不仅要求掌握其基本语法,更需要深刻理解其设计哲学,即如何优雅地应对不可预知的错误,保持程序的健壮性和用户的友好体验。通过遵循上述最佳实践,开发者可以构建更加稳定和可靠的Java应用。
JAVA异常处理是JAVA语言的重要机制,正确、合理地处理异常对电脑的稳定性和安全性有着极为重要的作用。异常主要有三类,包括异常处理语句的定义、捕捉异常和程序流程跳转等。 一、 JAVA 异常处理机制 JAVA 包括了...
异常处理机制是任何现代编程语言不可或缺的一部分,尤其是在像Java这样的面向对象的语言中更是如此。Java的异常处理机制旨在帮助开发者编写更健壮、更易于维护的代码。本文将通过一个具体的示例来探讨Java中的异常...
在 Java 应用程序运行过程中,如果出现内存不足的情况,JVM(Java虚拟机)会抛出 `java.lang.OutOfMemoryError: Java heap space` 的异常。这种错误通常发生在应用程序对内存的需求超过了 JVM 能够提供的最大堆空间...
Java异常处理是编程中至关重要的一个环节,尤其是在Android开发中,理解并熟练运用异常处理能够有效地定位和解决程序运行中的问题。以下将详细介绍在Java和Android开发中常见的一些异常类型及其处理策略。 1. **空...
Java异常处理是编程中至关重要的一个方面,它帮助开发者在程序遇到错误时进行优雅的恢复或终止。Java异常是程序运行时出现的不正常情况,可能是由于逻辑错误、资源问题或其他不可预见的因素导致的。Java提供了强大的...
Java异常处理是编程中至关重要的一个环节,它确保了程序在遇到错误时能够优雅地运行,而不是突然崩溃。在这个21页的PDF文档中,我们很可能会深入探讨Java的异常体系、异常处理机制以及如何有效地利用这些机制来增强...
- **适当的异常抛出**:合理使用`throw`和`throws`关键字,避免不必要的异常抛出,以免增加代码复杂度。 - **资源管理**:利用`try-with-resources`语句等现代Java特性来简化资源管理。 通过深入理解异常处理的概念...
检查异常是那些在编译时必须处理的异常,如`IOException`,如果方法可能抛出此类异常,要么在方法签名中使用throws声明,要么在方法体内捕获。运行时异常则是在程序运行时抛出的,如`NullPointerException`,它们不...
1. **异常抛出:**当程序中某段代码执行出现问题时,会抛出一个异常对象。 2. **异常捕获:**Java虚拟机会查找与抛出异常相匹配的`catch`块。如果找到,则将控制权交给该`catch`块;如果没有找到,则会继续向上层...