仓酷云

标题: 来看RuntimeException的特别情形 [打印本页]

作者: 兰色精灵    时间: 2015-1-18 11:36
标题: 来看RuntimeException的特别情形
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。
本章的第一个例子是:
if(t==null)
thrownewNullPointerException();
看起来仿佛在传送进进一个办法的每一个句柄中都必需反省null(由于不晓得挪用者是不是已传送了一个无效的句柄),这无疑是相称可骇的。但侥幸的是,我们基本不用如许做——它属于Java举行的尺度运转期反省的一部分。若对一个空句柄收回了挪用,Java会主动发生一个NullPointerException背例。以是上述代码在任何情形下都是过剩的。
这个种别里含有一系列背例范例。它们全体由Java主动天生,毋需我们亲身下手把它们包括到本人的背例标准里。最便利的是,经由过程将它们置进独自一个名为RuntimeException的基本类上面,它们全体组合到一同。这是一个很好的承继例子:它创建了一系列具有某种共通性的范例,都具有某些共通的特性与举动。别的,我们没需要专门写一个背例标准,指出一个办法大概会“掷”出一个RuntimeException,由于已假定大概呈现那种情形。因为它们用于指出编程中的毛病,以是几近永久不用专门捕捉一个“运转期背例”——RuntimeException——它在默许情形下会主动失掉处置。若必需反省RuntimeException,我们的代码就会变得相称繁复。在我们本人的包里,可选择“掷”出一部分RuntimeException。
假如不捕捉这些背例,又会呈现甚么情形呢?因为编译器其实不强迫背例标准捕捉它们,以是假设不捕捉的话,一个RuntimeException大概过滤失落我们抵达main()办法的一切路子。为体味此时产生的事变,请尝尝上面这个例子:
  1. //:NeverCaught.java
  2. //IgnoringRuntimeExceptions
  3. publicclassNeverCaught{
  4. staticvoidf(){
  5. thrownewRuntimeException("Fromf()");
  6. }
  7. staticvoidg(){
  8. f();
  9. }
  10. publicstaticvoidmain(String[]args){
  11. g();
  12. }
  13. }///:~
复制代码
人人已看到,一个RuntimeException(大概从它承继的任何工具)属于一种特别情形,由于编译器不请求为这些范例指定背例标准。
输入以下:

java.lang.RuntimeException:Fromf()
atNeverCaught.f(NeverCaught.java:9)
atNeverCaught.g(NeverCaught.java:12)
atNeverCaught.main(NeverCaught.java:15)

以是谜底就是:倘使一个RuntimeException取得抵达main()的一切路子,同时不被捕捉,那末当程序加入时,会为谁人背例挪用printStackTrace()。
注重大概能在本人的代码中仅疏忽RuntimeException,由于编译器已准确实施了其他一切把持。由于RuntimeException在此时期表一个编程毛病:
(1)一个我们不克不及捕捉的毛病(比方,由客户程序员吸收传送给本人办法的一个空句柄)。
(2)作为一位程序员,一个应在本人的代码中反省的毛病(如ArrayIndexOutOfBoundException,此时应注重数组的巨细)。
能够看出,最好的做法是在这类情形下背例,由于它们有助于程序的调试。
别的一个风趣的中央是,我们不成将Java背例分别为单一用处的工具。切实其实,它们计划用于把持那些厌恶的运转期毛病——由代码把持局限以外的其他力气发生。可是,它也出格有助于调试某些特别范例的编程毛病,那些是编译器侦测不到的。
你总不能说你写框架吧,那无疑会加大工作量,现在大多企业采取的是折中的办法,就是改别人写好的框架,可要改框架,前提是你对这个框架足够的了解,这就更难了。
作者: 因胸联盟    时间: 2015-1-21 10:45
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
作者: 分手快乐    时间: 2015-1-24 11:25
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
作者: 谁可相欹    时间: 2015-1-25 21:29
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者: 冷月葬花魂    时间: 2015-1-29 14:11
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
作者: 小妖女    时间: 2015-2-4 20:07
是一种为 Internet发展的计算机语言
作者: admin    时间: 2015-2-5 20:08
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
作者: 透明    时间: 2015-2-13 06:30
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
作者: 乐观    时间: 2015-2-19 05:46
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
作者: 小魔女    时间: 2015-3-1 15:29
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
作者: 小女巫    时间: 2015-3-13 22:46
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者: 莫相离    时间: 2015-3-25 16:55
是一种使网页(Web Page)产生生动活泼画面的语言
作者: 兰色精灵    时间: 2015-4-9 04:23
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者: 再见西城    时间: 2015-4-21 07:24
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
作者: 飘飘悠悠    时间: 2015-4-24 06:47
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
作者: 蒙在股里    时间: 2015-5-1 20:53
是一种语言,用以产生「小应用程序(Applet(s))
作者: 仓酷云    时间: 2015-6-10 07:38
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
作者: 灵魂腐蚀    时间: 2015-6-12 23:11
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
作者: 海妖    时间: 2015-6-22 04:59
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2