Java措施设计基本之异常处理惩罚
当前位置:以往代写 > JAVA 教程 >Java措施设计基本之异常处理惩罚
2019-06-14

Java措施设计基本之异常处理惩罚

Java措施设计基本之异常处理惩罚

副标题#e#

早期的编程语言(好比C语言)没有异常处理惩罚,凡是是碰着错误返回一个非凡的值或设定一个符号,并以此判定是不是有错误发生。跟着系统局限的不绝扩大,这种错误处理惩罚已经成为建设大型可维护措施的障碍了。于是在一些语言中呈现了异常处理惩罚机制,好比在Basic中的异常处理惩罚语句“on error goto”,而Java则在C++基本上成立了新的异常处理惩罚机制。

Java通过面向工具的要领举办异常处理惩罚,把各类差异的异常举办分类,并提供了精采的接口。这种机制为巨大措施提供了强有力的节制方法。同时这些异常代码与“通例”代码疏散,加强了措施的可读性,编写措施时也显得更机动。

异常处理惩罚尚有一个长处是在你不能确定和处理惩罚异常时,你可以不处理惩罚,而把问题提交上去。另一方面,异常处理惩罚机制使得错误处理惩罚代码更有层次,更便于维护。下面,我们看看在Java中如那里理惩罚异常。

Java中的异常类

在Java中,每个异常都是一个工具,它是Throwable类或其它子类的实例。当一个要领呈现异常后便抛出一个异常工具,该工具中包括有异常信息,挪用这个工具的要领可以捕捉到这个异常并举办处理惩罚。

Throwable类有两个尺度子类:java.lang.Error和java.lang.Exception熂创砦蠛鸵斐!4砦螅烢rror类 一般是指虚拟机相关的问题,如系统瓦解、虚拟机堕落误、动态链接失败等,这一类错误无律例复或不行能捕捉,将导致应用措施间断。异常烢xception类 则是指一些可以被捕捉且大概规复的异常环境,如数组下标越界烝rrayIndexOutOfBoundsExcepton 、数字被零除发生异常烝rithmeticException 、输入/输出异常烮OException 等。

提示:Java编译器要求Java措施必需捕捉或声明所有非运行时的异常,如:FileNotFoundException、IOException等。因为,对付这类异常来说,假如措施不举办处理惩罚,大概会带来意想不到的功效。但运行时呈现异常可以不做处理惩罚,因为这类异常很普遍,全部处理惩罚大概对措施的可读性和运行效率发生影响。

Java异常处理惩罚形式

Java的异常处理惩罚是通过5个要害词来实现的:try、catch、throw、throws和finally。一般环境下是用try来执行一段措施,假如呈现异常,系统会抛出(throws)一个异常,这时候你可以通过它的范例来捕获(catch)它,或最后(finally)由缺省处理惩罚器来处理惩罚。

下面是Java异常处理惩罚措施的根基形式:

try
//执行时措施块

catch 烢xceptionType1e
//对ExceptionType1的处理惩罚

catch 烢xceptionType2e
//对ExceptionType2的处理惩罚
throw 焑
//再抛出这个“异常”

finally

 

try措施块和catch语句

碰着一个try语句,“异常”的框架就放到仓库上面,直到所有的try块内的语句都完成。假如下一级的try语句没有对某种“异常”举办处理惩罚, 仓库就会展开,直到碰着有处理惩罚这种“异常” 的try语句。在try措施后头,应包括一个catch子句来指定你想要捕获的“异常”的范例。

提示:捕捉异常的第一步就是用try…犙《你要捕捉异常的范畴,在执行时,括号内的代码会发生异常工具并被抛出。然后你就可以用catch块来处理惩罚异常了。

throw语句和throws语句

throw语句用来明晰地抛出一个“异常”。首先,你必需获得一个Throwable类或其它子类发生的实例句柄, 通过参数传到catch子句,可能用new语句来建设一个实例。


#p#副标题#e#

下面是throw语句的凡是形式:

throw ThrowableInstance

提示:执行throw语句后,运行流程将当即遏制,throw的下一条语句也将暂停执行。这里new运算符用于建设一个Throwable类的实例,在后文的面向工具编程一文中将具体讲授。

throws语句用来标明一个成员函数大概抛出的各类“异常”。对大大都Exception子类来说,Java编译器会强迫你声明在一个成员函数中抛出的“异常”的范例。假如“异常”的范例是Error或RuntimeException,或它们的子类,这个法则不起浸染。假如你想明晰地抛出一个RuntimeException,你必需用throws语句来声明它的范例。

提示:虽然,你大概对上面的说明不是很大白,不外没干系,编译运行下面的Java措施(已经为你做了具体的注释)你会领略许多!

此刻我们用下面的例程来说明问题:

class ThrowsDemo //类名,相应的java源文件应该生存成:ThrowsDemo.java
static void procedure   throws Illegal
AccessException //throws语句
//抛出IllegalAccessException范例的异常
System.out.println″inside procedure″  //输出文本信息,以说明是在执行proced
ure要领时抛出了异常
throw new IllegalAccessException″de
mo″  //新生成一个Throwable类实例,然后抛出异常

public static void main烻tring args煠牎 //main煛》椒开始,措施以后处执行
try //try语句块开始
procedure   //挪用procedure要领,该要领将Throw(抛出)异常信息

catch 烮llegalAccessException e
//处理惩罚IllegalAccessException范例的异常,catch语句块
System.out.println″caught ″ + e 

编程并执行措施,其进程如下:

E焅javacode\exception>java ThrowsDe
mo
inside procedure
caught java.lang.IllegalAccessExceptio
n demo

#p#分页标题#e#

提示:如上面的代码所示,我们用了一个完整的措施来说明在Java措施中如何利用try…catch…throw等语句。Try…犂锊生的异常被捕捉了下来,然后在catch块里举办处理惩罚(这里只是输出异常信息)。throws IllegalAccessException标明措施将抛出一个IllegalAccessException范例的异常。IllegalAccessException e生成一个异常工具,然后用System.out.println输出异常信息。

#p#副标题#e#

finally语句

有时为了确保一段代码不管产生什么异常都要被执行,可以利用要害词finally来标出这样一段代码。一个成员函数返回到挪用它的成员函数,可能通过一个没捕获到的异常,可能通过一个明晰的return语句,finally子句老是刚亏得成员函数返回前执行。

下面我们以一个较量完整的异常处理惩罚措施来说明上面所述的各类异常处理惩罚语句的利用问题:

class ExceptionDemo //异常利用示例,生存为ExceptionDemo.java
static void procA

try
System.out.println″inside procA″
throw new RuntimeException″demo″
牓//抛出异常
finally
System.out.println″procA's finally″ //留意:不管产生什么等会执行!!
static void procB
try
System.out.println″inside procB″
return牓 //返回,实际上是在finally语句执行完后才返回
finally
System.out.println″procB's finally″
public static void main烻tring args
try
procA
catch烢xception e
System.out.println″catch″+e
procB

提示:在上面的完整措施中,finally后的大括号内的代码是任何环境下城市执行的。别的,在procB中,return语句并没有当即返回,这一点应该出格留意。你可以亲自动手,执行上面的措施试试(编译和执行雷同于上例)。

到今朝为止,关于Java的流程节制已经完全讲完了。要真正领略并把握它们只有颠末大量的操练。而好的要领就是修改上面的每一个措施,让它们实现你想要的成果,并在此根基上领略Java的流程节制。而要写好Java措施,熟悉利用Java的流程节制和异常处理惩罚长短常要害的。所以在这两期中,我们用大量的例程来说明Java语言是如何利用流程节制语句的,而且对流程节制中常常利用的异常处理惩罚语句做了简朴的先容。

    关键字:

在线提交作业