<b>若何更公道的操作Java中的非常抛出</b>[Java编程]
本文“<b>若何更公道的操作Java中的非常抛出</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
从前,我认为编程语言中最让人不解的部份就是它可以成立错误.当时我对Java语言中的throw关键字的第一反映就是"啊,这也太傻了,为什么我们想要引发一个错误(error)?"我认为错误是我的仇人,该当避免的,所以成立错误是毫无用处乃至是危险的.我认为在JavaScript中加入这样的关键字是画蛇添足.但随着我编程经验的丰富,我逐突变成了throw我的error粉丝.公道的利用它们会让对代码的调试和保护大大简化.
在编程的时刻,Error普通呈目前不盼望的事情发生时.大概是传入函数的参数值不精确,大概是运算符的操作数不合理.为此编程语言定义了一个基本的法则:当上述情形发生时,就产生一个错误来让编程人员对代码举行修复.假如这些错误不被抛出或反馈给你,那么调试程序几近是不大概的.假如全部的错误都"暗暗地"发生,那么你很难在第一时间发现问题所在,并将其修复.因此Error是开辟者的朋友,而不是仇人.
Error的问题所在是它们会在错误的时间和错误的地址发生.更糟的是,默许的错误信息普通晦涩难懂,很难注释那边出了问题.JavaScirpt的错误信息更是不包含任何有代价的信息,并且还很躲藏(特别是在IE里运行时).想象一下假如能有这样的错误提醒呈现"因为某件事情发生招致某个函数调用失利",那么立即我们的调试任务就变得简单了,这就是throw自己的error的好处.
我们可以把error想象成内嵌的非常类.在代码的某个特定的地址预计非常的发生必定要比在全部的地方等候非常的发生要简单.这不光在代码编写中,在产品计划中也是一个广泛认同的原则.就像在轿车上计划了挤压区域和框架,以便在遭到撞击时会以盼望的方法发生变形.因为知道了框架在遭到撞击时会若何变形,哪些零件会失效,这样制造商便可以造出保证乘客安全的汽车.我们的代码也可以按照这样的思惟编写.
固然近来几年JavaScript有了很多进步,但是相比于别的语言的开辟者,JavaScript开辟者仍旧只有少得可怜的调试工具.因此在JavaScript中throw error就显得比别的语言更有代价.我们可以用throw关键字来抛出一个对象.我们可以抛出任何范例的对象,不过Error对象是最常用的:
|
当我们用这样的方法抛出错误,而这个错误又不被try-catch捕捉时,浏览器就会用其普通的方法显示上面的错误信息(Something bad happened).在IE里会在浏览器的左下角呈现一个小图标,当双击图标时会弹出一个带着上面错误提醒的对话框;安装有Firebug插件的火狐浏览器会在掌握台显示错误信息;Safar和Chrome会在Web Inspector中显示;Opera会在错误掌握台显示.一句话,它们会像你没有抛出错误时一样处理.但差别的是它会通过浏览器向你供应具体的信息,而不是一个发生错误的行列号.你可认为错误信息加入任何需求的信息,来帮你成功办理问题.我倡议在错误信息中供应发生错误的函数名称以及错误缘由.看下面这个函数:
|
这个函数的功效是向一个给定的element加入新的CSS class(这在JavaScript中非常广泛).但假如element是null的时刻会发生什么?你会得到一个这样的错误提醒"object expected",很隐晦.然后你需求查看履行仓库(假如浏览器支持这个功效)来准肯定位错误的源头.假如我们抛出一个错误调试就变得简单了:
|
先不谈论若何切确的判断对象能否是一个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的地址会耗费一些时间.不过一旦你找到了这些地址,你的调试时间就会大大降低,而你对代码的称心度会得到晋升.
以上是“<b>若何更公道的操作Java中的非常抛出</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |