2022年计算机二级考试Java入门教程:Java的-异常-.docx

上传人:壹****1 文档编号:544696782 上传时间:2022-11-08 格式:DOCX 页数:8 大小:15.04KB
返回 下载 相关 举报
2022年计算机二级考试Java入门教程:Java的-异常-.docx_第1页
第1页 / 共8页
2022年计算机二级考试Java入门教程:Java的-异常-.docx_第2页
第2页 / 共8页
2022年计算机二级考试Java入门教程:Java的-异常-.docx_第3页
第3页 / 共8页
2022年计算机二级考试Java入门教程:Java的-异常-.docx_第4页
第4页 / 共8页
2022年计算机二级考试Java入门教程:Java的-异常-.docx_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《2022年计算机二级考试Java入门教程:Java的-异常-.docx》由会员分享,可在线阅读,更多相关《2022年计算机二级考试Java入门教程:Java的-异常-.docx(8页珍藏版)》请在金锄头文库上搜索。

1、 2022年计算机二级考试Java入门教程:Java的异常“特别“指的是程序运行时消失的非正常状况。在用传统的语言编程时,程序员只能通过函数的返回值来发出错误信息。这易于导致许多错误,由于在许多状况下需要知道错误产生的内部细节。通常,用全局变量errno来存储“特别“的类型。这简单导致误用,由于一个errno的值有可能在被处理?reg;前被另外的错误掩盖掉。即使美的C语言程序,为了处理“特别“状况,也常求助于goto语句。Java对“特别“的处理是面对对象的。一个Java的Exception是一个描述“特别“状况的对象。当消失“特别“状况时,一个Exception对象就产生了,并放到产生这个“

2、特别“的成员函数里。8.1根底 Java的“特别“处理是通过5个关键词来实现的:try,catch,throw,throws和finally。用try来执行一段程序,假如消失“特别“,系统抛出(throws?copy;一个“特别“,你可以通过它的类型来捕获(catch?copy;它,或最终(finally?copy;由缺省处理器来处理。下面是“特别“处理程序的根本形式:try/程序块catch(ExceptionType1e)/对ExceptionType1的处理catch(ExceptionType2e)/对ExceptionType2的处理throw(e);/再抛出这个“特别“finall

3、y 8.2“特别“的类型 在“特别“类层次的最上层有一个单独的类叫做Throwable。这个类用来表示全部的“特别“状况。每个“特别“类型都是Throwable的子类。Throwable有两个直接的子类。一类是Exception,是用户程序能够捕获到的“特别“状况。我们将通过产生它的子类来创立自己的“特别“。另一类是Error,它定义了那?copy;通常无法捕获到的“特别“。要慎重使用Error子类,由于它们通常会导致灾难性的失败。在Exception中有一个子类RuntimeException,它是程序运行时自动地对某?copy;错误作出反响而产生的。 8.3不捕获“特别“ “特别“对象是J

4、ava在运行时对某?copy;“特别“状况作出反响而产生的。例如,下面这个小程序包含一个整数被0除的“特别“。 classExc0publicstaticvoidmain(Stringargs)intd=0;inta=42/d; 当Java执行这个除法时,由于分母是0,就会构造一个“特别“对象来使程序停下来并处理这个错误状况,在运行时“抛出“(throw?copy;这个“特别“。说“抛出“是由于它象一个滚烫的马铃薯,你必需把它抓住并马上处理。程序流将会在除号操作符处被打断,然后检查当前的调用堆栈来查找“特别“。一个“特别“处理器是用来马上处理“特别“状况的。在这个例子里,我们没有编一个“特别“

5、处理器,所以缺省的处理器就发挥作用了。缺省的处理器打印Exception的字符?reg;值和发生“特别“的地点。 下面是我们的小例子的输出。 C:javaExc0java.lang.arithmeticException:/byzeroatExc0.main(Exc0.java:4) 8.4try与catch 通常我们盼望自己来处理“特别“并连续运行。可以用try来指定一块预防全部“特别“的的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕获的“特别“的类型。例如,下面的例子是在前面的例子的根底上构造的,但它包含一个try程序块和一个catch子句。classexc1publ

6、icstaticvoidmain(stringargs)tryintd=0;inta=42/d;catch(arithmeticexceptione)system.out.println(“divisionbyzero“); catch子句的目标是解决“特别“状况,把变量设到合理的状态,并象没有出错一样连续运行。假如一个子程序不处理某个“特别“,则返到上一级处理,直到最外一级。 8.5多个catch子句 在某状况下,同一段程序可能产生不止一种“特别“状况。你可以放置多个catch子句,其中每一种“特别“类型都将被检查,第一个与?reg;匹配的就会被执行。假如一个类和其子类都有的话,应把子类放在

7、前面,否则将永久不会到达子类。下面是一个有两个catch子句的程序的例子。 classMultiCatchpublicstaticvoidmain(Stringargs)tryinta =args.length;System.out.println(“a=“+a);intb=42/a;intc= 1;c42=99;catch(ArithmeticExceptione)System.out.println(“div by0:“+e);catch(ArrayIndexOutOfBoundsExceptione) system.out.println(“arrayindexoob:“+e); 假如在

8、程序运行时不跟参数,将会引起一个0做除数的“特别“,由于a的值为0。假如我们提?copy;一个命令行参数,将不会产生这个“特别“,由于a的值大于0。但会引起一个ArrayIndexOutOfBoundexception的“特别“,由于整型数组c的长度是1,却给c42赋值。下面是以上两种状况的运行结果。 C:javaMultiCatcha=0divby0:java.lang.arithmeticexception:/by zeroC:javaMutiCatch1a=1arrayindexoob: java.lang.ArrayIndexOutOfBoundsException:42 8.6try

9、语句的嵌套 你可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部,写另一个try语句爱护其他代码。每当遇到一个try语句,“特别“的框架就放到堆栈上面,直到全部的try语句都完成。假如下一级的try语句没有对某种“特别“进展处理,堆栈就会绽开,直到遇到有处理这种“特别“的try语句。下面是一个try语句嵌套的例子。 classMultiNeststaticvoidprocedure()tryintc=1:c42 =99;catch(ArrayIndexOutOfBoundsexceptione) System.out.println(“arrayindexoob:“+e);pub

10、licstaticvoid main(Stringargs)tryinta=args.length;system.out.println(“a =“+a);intb=42/a;procedure();catch(arithmeticExceptione) System.out.println(“divby0:“+e); 成员函数procedure里有自己的try/catch掌握,所以main不用去处理ArrayIndexOutOfBoundsException。 8.7throw语句 throw语句用来明确地抛出一个“特别“。首先,你必需得到一个Throwable的实例的掌握柄,通过参数传到c

11、atch子句,或者用new操作符来创立一个。下面是throw语句的通常形式。 throwThrowableInstance; 程序会在throw语句后马上终止,它后面的语句执行不到,然后在包含它的全部try块中从里向外查找含有与其匹配的catch子句的try块。下面是一个含有throw语句的例子。 classThrowDemostaticvoiddemoproc()trythrownewNullPointerException(“de3mo“);catch(NullPointerExceptione)System.out.println(“caughtinsidedemoproc“);thro

12、we;publicstaticvoidmain(Stringargs)trydemoproc(); catch(NullPointerExceptione)system.out.println(“recaught:“+e); 8.8throws语句 throws用来标明一个成员函数可能抛出的各种“特别“。对大多数Exception子类来说,Java编译器会强迫你声明在一个成员函数中抛出的“特别“的类型。假如“特别“的类型是Error或RuntimeException,或它们的子类,这个规章不起作用,由于这?copy;在程序的正常局部中是不期盼消失的。假如你想明确地抛出一个RuntimeExce

13、ption,你必需用throws语句来声明它的类型。这就重新定义了成员函数 的定义语法:typemethod-name(arg-list)throwsexception-list 下面是一段程序,它抛出了一个“特别“,但既没有捕获它,也没有用throws来声明。这在编译时将不会通过。 classThrowsDemo1staticvoidprocedure()System.out.println(“inside procedure“);thrownewIllegalAccessException(“demo“);publicstatic voidmain(Stringargs)procedure

14、(); 为了让这个例子编译过去,我们需要声明成员函数procedure抛出了IllegalAccessException,并且在调用它的成员函数main里捕获它。下面是正确的例子: classThrowsDemostaticvoidprocedure()throwsIllegalAccessException System.out.println(“insideprocedure“);thrownew IllegalAccessException(“demo“);publicstaticvoidmain(Stringargs) tryprocedure();catch(IllegalAccessExceptione) System.out.println(“caught“+e); 下面是输出结果: C:javaThrowsDemoinsideprocedurecaught java.lang.IllegalAccessException:demo

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号