文档库 最新最全的文档下载
当前位置:文档库 › Java异常处理总结(精)

Java异常处理总结(精)

Java异常处理总结(精)
Java异常处理总结(精)

Java 异常处理总结

找到一个关于异常总结的很详细的文章, 分享下. 异常在我们编程中很重,在适当的位置,合理的处理或者抛出异常,对程序来说至关重要。转:异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C 开始,你也许已经知道如何用if...else... 来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误如果多个地方出现,那么你每个地方都要做相同处理,感觉相当的麻烦!

Java 语言在设计的当初就考虑到这些问题,提出异常处理的框架的方案,所有的异常都可以用一个类型来表示,不同类型的异常对应不同的子类异常(这里的异常包括错误概念),定义异常处理的规范,在1.4版本以后增加了异常链机制,从而便于跟踪异常!这是Java 语言设计者的高明之处,也是Java 语言中的一个难点,下面是我对Java 异常知识的一个总结,也算是资源回收一下。

一、Java 异常的基础知识

异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误https://www.wendangku.net/doc/524027321.html,ng.Error ;如果你用System.out.println(11/0,那么你是因为你用0做了除数,会抛出https://www.wendangku.net/doc/524027321.html,ng.ArithmeticException 的异常。有些异常需要做处理,有些则不需要捕获处理,后面会详细讲到。天有不测风云,人有旦夕祸福,Java 的程序代码也如此。在编程过程中,首先应当尽可能去避免错误和异常发生,对于不可避免、不可预测的情况则在考虑异常发生时如何处理。

Java 中的异常用对象来表示。Java 对异常的处理是按异常分类处理的,不同异常有不同的分类,每种异常都对应一个类型(class ),每个异常都对应一个异常(类的)对象。

异常类从哪里来?有两个来源,一是Java 语言本身定义的一些基本异常类型,二是用户通过继承Exception 类或者其子类自己定义的异常。Exception 类及其

子类是Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。异常的对象从哪里来呢?有两个来源,一是Java 运行时环境自动抛出系统生成的异常,而不管你是否愿意捕获和处理,它总要被抛出!比如除数为0的异常。二是程序员自己抛出的异常,这个异常可以是程序员自己定义的,也可以是Java 语言中定义的,用throw 关键字抛出异常,这种异常常用来向调用者汇报异常的一些信息。异常是针对方法来说的,抛出、声明抛出、捕获和处理异常都是在方法中进行的。

Java 异常处理通过5个关键字try 、catch 、throw 、throws 、finally 进行管理。基本过程是用try 语句块包住要监视的语句,如果在try 语句块内出现异常,则异常会被抛出,你的代码在catch 语句块中可以捕获到这个异常并做处理;还有一部分系统生成的异常在Java 运行时自动抛出。你也可以通过throws 关键字在方法上声明该方法要抛出异常,然后在方法内部通过throw 抛出异常对象。finally 语句块会在方法执行return 之前执行,一般结构如下:

try{

程序代码

}catch(异常类型1异常的变量名1{

程序代码

}catch(异常类型2异常的变量名2{

程序代码

}finally{

程序代码

}

catch 语句可以有多个,用来匹配多个异常,匹配上多个中一个后,执行catch 语句块时候仅仅执行匹配上的异常。catch 的类型是Java 语言中定义的或者程序员自己定义的,表示代码抛出异常的类型,异常的变量名表示抛出异常的对象的引用,如果catch 捕获并匹配上了该异常,那么就可以直接用这个异常变量名,此时该异常变量名指向所匹配的异常,并且在catch 代码块中可以直接引用。这一点非常非常的特殊和重要!

Java 异常处理的目的是提高程序的健壮性,你可以在catch 和finally 代码块中给程序一个修正机会,使得程序不因异常而终止或者流程发生以外的改变。同时,通过获取Java 异常信息,也为程序的开发维护提供了方便,一般通过异常

信息就很快就能找到出现异常的问题(代码)所在。Java 异常处理是Java 语言的一大特色,也是个难点,掌握异常处理可以让写的代码更健壮和易于维护。

二、Java 异常类类图下面是这几个类的层次图:

https://www.wendangku.net/doc/524027321.html,ng.Object

https://www.wendangku.net/doc/524027321.html,ng.Throwable

https://www.wendangku.net/doc/524027321.html,ng.Exception

https://www.wendangku.net/doc/524027321.html,ng.RuntimeException

https://www.wendangku.net/doc/524027321.html,ng.Error

https://www.wendangku.net/doc/524027321.html,ng.ThreadDeath

下面四个类的介绍来自java api 文档。

1、Throwable :Throwable 类是Java 语言中所有错误或异常的超类。只有当对象是此类(或其子类之一)的实例时,才能通过Java 虚拟机或者Java throw 语句抛出。类似地,只有此类或其子类之一才可以是catch 子句中的参数类型。两个子

类的实例,Error 和Exception ,通常用于指示发生了异常情况。通常,这些实例是在异常情况的上下文中新近创建的,因此包含了相关的信息(比如堆栈跟踪数据)。

2、Exception :

3、Error :Exception 类及其子类是Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件,表示程序本身可以处理的异常。Error 是Throwable 的子类,表示仅靠程序本身无法恢复的严重错误,用于指示合理的应用程序不应该试图捕获的严重问题。在执行该方法期间,无需在方法中通过throws 声明可能抛出但没有捕获的Error 的任何子类,因为Java 编译器不去检查它,也就是说,当程序中可能出现这类异常时,即使没有用try...catch 语句捕获它,也没有用throws 字句声明抛出它,还是会编译通过。

4、RuntimeException :RuntimeException 是那些可能在Java 虚拟机正常运行期间抛出的异常的超类。Java 编译器不去检查它,也就是说,当程序中可能出现这类异常时,即使没有用try...catch 语句捕获它,也没有用throws 字句声明抛出它,还是会编译通过,这种异常可以通过改进代码实现来避免。

5、ThreadDeath :调用Thread 类中带有零参数的stop 方法时,受害线程将抛出一个ThreadDeath 实例。仅当应用程序在被异步终止后必须清除时才应该捕获这个类的实例。如果ThreadDeath 被一个方法捕获,那么将它重新抛出非常重要,因为这样才能让该线程真正终止。如果没有捕获ThreadDeath ,则顶级错误处理程序不会输出消息。虽然ThreadDeath 类是“正常出现”的,但它只能是Error 的子类而不是Exception 的子类,因为许多应用程序捕获所有出现的Exception ,然后又将其放弃。

以上是对有关异常API 的一个简单介绍,用法都很简单,关键在于理解异常处理的原理,具体用法参看Java API 文档。

三、Java 异常处理机制

对于可能出现异常的代码,有两种处理办法:

第一、在方法中用try...catch 语句捕获并处理异常,catach 语句可以有多个,用来匹配多个异常。例如:

public void p(intx{

try{

...

}catch(Exceptione{

...

}finally{

...

}

}

第二、对于处理不了的异常或者要转型的异常,在方法的声明处通过throws 语句抛出异常。例如:

public void test1(throws MyException{

...

if(....{

throw new MyException(;

}

}如果每个方法都是简单的抛出异常,那么在方法调用方法的多层嵌套调用中,Java 虚拟机会从出现异常的方法代码块中往回找,直到找到处理该异常的代码块为止。然后将异常交给相应的catch 语句处理。如果Java 虚拟机追溯到方法调用栈最底部main(方法时,如果仍然没有找到处理异常的代码块,将按照下面的步骤处理:

第一、调用异常的对象的printStackTrace(方法,打印方法调用栈的异常信息。

第二、如果出现异常的线程为主线程,则整个程序运行终止;如果非主线程,则终止该线程,其他线程继续运行。通过分析思考可以看出,越早处理异常消耗的资源和时间越小,产生影响的范围也越小。因此,不要把自己能处理的异常也抛给调用者。还有一点,不可忽视:finally 语句在任何情况下都必须执行的代码,这样可以保证一些在任何情况下都必须执行代码的可靠性。比如,在数据库查询异常的时候,应该释放JDBC 连接等等。finally 语句先于return 语句执行,而不论其先后位置,也不管是否try 块出现异常。finally 语句唯一不被执行的情况是方法执行了System.exit(方法。System.exit(的作用是终止当前正在运行的Java 虚拟机。finally 语句块中不能通过给变量赋新值来改变return 的返回值,也建议不要在finally 块中使用return 语句,没有意义还容易导致错误。

最后还应该注意一下异常处理的语法规则:

第一、try 语句不能单独存在,可以和catch 、finally 组成try...catch...finally 、try...catch 、try...finally 三种结构,catch 语句可以有一个或多个,finally 语句最多一个,try 、catch 、finally 这三个关键字均不能单独使用。

第二、try 、catch 、finally 三个代码块中变量的作用域分别独立而不能相互访问。如果要在三个块中都可以访问,则需要将变量定义到这些块的外面。

第三、多个catch 块时候,Java 虚拟机会匹配其中一个异常类或其子类,就执行这个catch 块,而不会再执行别的catch 块。第四、throw 语句后不允许有紧跟其他语句,因为这些没有机会执行。

第五、如果一个方法调用了另外一个声明抛出异常的方法,那么这个方法要么处理异常,要么声明抛出。

那怎么判断一个方法可能会出现异常呢?一般来说,方法声明的时候用了throws 语句,方法中有throw 语句,方法调用的方法声明有throws 关键字。throw 和throws 关键字的区别

throw 用来抛出一个异常,在方法体内。语法格式为:throw 异常对象。

throws 用来声明方法可能会抛出什么异常,在方法名后,语法格式为:throws 异常类型1,异常类型2... 异常类型n 。

四、如何定义和使用异常类

1、使用已有的异常类,假如为IOException 、SQLException 。

try{

程序代码

}catch(IOExceptionioe{

程序代码

}catch(SQLExceptionsqle{

程序代码

}finally{

程序代码

}

2、自定义异常类

创建Exception 或者RuntimeException 的子类即可得到一个自定义的异常类。例如:

public class MyException extends Exception{

public MyException({}

public MyException(Stringsmg{

super(smg;

}

}

3、使用自定义的异常

用throws 声明方法可能抛出自定义的异常,并用throw 语句在适当的地方抛出自定义的异常。例如:在某种条件抛出异常

public void test1(throws MyException{

...

if(....{

throw new MyException(;

}

}

将异常转型(也叫转译),使得异常更易读易于理解

public void test2(throws MyException{

...

try{

...

}catch(SQLExceptione{

...

throw new MyException(;

}

}

还有一个代码,很有意思:

public void test2(throws MyException{

...

try {

...

}catch (MyExceptione {

throw e;

}

}这段代码实际上捕获了异常,然后又和盘托出,没有一点意义,如果这样还有什么好处理的,不处理就行了,直接在方法前用throws 声明抛出不就得了。异常的捕获就要做一些有意义的处理。

五、运行时异常和受检查异常

Exception 类可以分为两种:运行时异常和受检查异常。

1、运行时异常

RuntimeException 类及其子类都被称为运行时异常,这种异常的特点是Java 编译器不去检查它,也就是说,当程序中可能出现这类异常时,即使没有用try...catch 语句捕获它,也没有用throws 字句声明抛出它,还是会编译通过。例如,当除数为零时,就会抛出https://www.wendangku.net/doc/524027321.html,ng.ArithmeticException 异常。

2、受检查异常

除了RuntimeException 类及其子类外,其他的Exception 类及其子类都属于受检查异常,这种异常的特点是要么用try...catch 捕获处理,要么用throws 语句声明抛出,否则编译不会通过。

3、两者的区别

运行时异常表示无法让程序恢复运行的异常,导致这种异常的原因通常是由于执行了错误的操作。一旦出现错误,建议让程序终止。受检查异常表示程序可以处理的异常。如果抛出异常的方法本身不处理或者不能处理它,那么方法的调用者就必须去处理该异常,否则调用会出错,连编译也无法通过。

当然,这两种异常都是可以通过程序来捕获并处理的,比如除数为零的运行时异常:

public class HelloWorld {

public static void main(String[]args {

System.out.println("HelloWorld!!!";

try{

System.out.println(1/0;

}catch(ArithmeticExceptione{

System.out.println("除数为0!";

}

System.out.println("除数为零后程序没有终止啊,呵呵!!!";

}

}

运行结果:

Hello World!!!

除数为0!

除数为零后程序没有终止啊,呵呵!!!4、运行时错误

4、Error 类及其子类表示运行时错误,通常是由Java 虚拟机抛出的,JDK 中与定义了一些错误类,比如VirtualMachineError 和OutOfMemoryError ,程序本身无法修复这些错误. 一般不去扩展Error 类来创建用户自定义的错误类。而RuntimeException 类表示程序代码中的错误,是可扩展的,用户可以创建特定运行时异常类。

Error (运行时错误)和运行时异常的相同之处是:Java编译器都不去检查它们,当程序运行时出现它们,都会终止运行。5、最佳解决方案

对于运行时异常,我们不要用try...catch 来捕获处理,而是在程序开发调试阶段,尽量去避免这种异常,一旦发现该异常,正确的做法就会改进程序设计的代码和实现方式,修改程序中的错误,从而避免这种异常。捕获并处理运行时异常是好

的解决办法,因为可以通过改进代码实现来避免该种异常的发生。对于受检查异常,没说的,老老实实去按照异常处理的方法去处理,要么用try...catch 捕获并解决,要么用throws 抛出!对于Error (运行时错误),不需要在程序中做任何处理,出现问题后,应该在程序在外的地方找问题,然后解决。

六、异常转型和异常链

异常转型在上面已经提到过了,实际上就是捕获到异常后,将异常以新的类型的异常再抛出,这样做一般为了异常的信息更直观!比如:

public void run(throws MyException{

... try{ ... }catch(IOException e{ ... throw new MyException(; }finally{ ... } } 异常链,在 JDK1.4 以后版本中,Throwable 类支持异常链机制。Throwable 包含了其线程创建时线程执行堆栈的快照。它还包含了给出有关错误更多信息的消息字符串。最后,它还可以包含 cause(原因)的另一个导致此 throwable 抛出的throwable。它也称为异常链设施,因为 cause 自身也会有 cause,依此类推,就形成了异常链,每个异常都是由另一个异常引起的。通俗的说,异常链就是把原始的异常包装为新的异常类,并在新的异常类中封装了原始异常类,这样做的目的在于找到异常的根本原因。通过 Throwable 的两个构造方法可以创建自定义的包含异常原因的异常类型: Throwable(String message, Throwable cause 构造一个带指定详细消息和 cause 的新 throwable。 Throwable(Throwable cause 构造一个带指定cause 和 (cause==null ? null :cause.toString((它通常包含类和 cause 的详细消息)的详细消息的新 throwable。 getCause( 返回此 throwable 的 cause;如果 cause 不存在或未知,则返回 null。 initCause(Throwable cause 将此 throwable 的 cause 初始化为指定值。在 Throwable 的子类 Exception 中,也有类似的指定异常原因的构造方法: Exception(String message, Throwable cause 构造带指定详细消息和原因的新异常。 Exception(Throwable cause 根据指定的原因和 (cause==null ? null :

cause.toString( 的详细消息构造新异常(它通常包含 cause 的类和详细消息)。因此,可以通过扩展 Exception 类来构造带有异常原因的新的异常类。七、Java 异常

处理的原则和技巧 1、避免过大的 try 块,不要把不会出现异常的代码放到 try 块里面,尽量保持一个 try 块对应一个或多个异常。 2、细化异常的类型,不要不管什么类型的异常都写成 Excetpion。 3、catch 块尽量保持一个块捕获一类异常,不要忽略捕获的异常,捕获到后要么处理,要么转译,要么重新抛出新类型的异常。

4、不要把自己能处理的异常抛给别人。

5、不要用 try...catch 参与控制程序流程,异常控制的根本目的是处理程序的非正常情况。

Java语言提供两种异常处理机制

得到一个异常对象是,它将会沿着方法的调用栈逐层回溯,寻找处理这一异常的代码。找到能够处理这种类型异常的方法后,运行时系统把当前异常交给这个方法处理;如果找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。捕获异常是通过try-catch-finally语句实现的。语法为:try{ ... }catch(ExceptionName1 e){ ... }catch(ExceptionName2 e){ ... } ... }finally{ ... } 2)声明抛弃异常:当Java 程序运行时系统得到一个异常对象时,如果一个方法并不知道如何处理所出现的异常,则可在方法声明时,声明抛弃异常。声明抛弃异常是在一个方法声明中的throws子句中指明的。如:public int read() throws IOException{ ... } 其中throws IOException就是声明抛弃异常,throws后可以跟多个异常类型。 1. https://www.wendangku.net/doc/524027321.html,ng.nullpointerexception 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话) 2. https://www.wendangku.net/doc/524027321.html,ng.classnotfoundexception 这个异常是很多原本在jb等开发环境中开发的程序员,把jb下的程序包放在wtk下编译经常出现的问题,异常的解释是"指定的类不存在",这里主要考虑一下类的名称和路径是否正确即可,如果是在jb下做的程序包,一般都是默认加上package的,所以转到wtk下后要注意把package的路径加上。 3. https://www.wendangku.net/doc/524027321.html,ng.arithmeticexception 这个异常的 好好检查一下自己程序中涉及到数学运算的地方,公式是不是有不妥了。 4. 是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常。 5. https://www.wendangku.net/doc/524027321.html,ng.illegalargumentexception 这个异常的解释是"方法的参数错误",很多j2me的类库中的方法在一些情况下都会引发这样的错误,比如音量调节方法中的音量参数如果写成负数就会出现这个异常,再比如g.setcolor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常,因此一旦发现这个异常,我们要做的,就是赶紧去检查一下方法调用中的参数传递是不是出现了错误。 6. https://www.wendangku.net/doc/524027321.html,ng.illegalaccessexception 这个异常的解释是"没有访问权限",当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了package的情况下要注意这个异常。其他还有很多异常,我就不一一列举了,我要说明的是,一个合格的程序员,需要对程序中常见的问题有相当的了解和相应的解决办法,否则仅仅停留在写程序而不会改程序的话,会极大影响到自己的开发的。关于异常的全部说明,在api里都可以查阅。算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeArrayException 数组下标越界异常:ArrayIndexOutOfBoundsException 违背安全原则异常:SecturityException 文件已结束异常:EOFException 文件未找到异常:FileNotFoundException 字符串转换为数字异常:NumberFormatException 操作数据库异常:SQLException 输入输出异常:IOException 方法未找到异常:NoSuchMethodException https://www.wendangku.net/doc/524027321.html,ng.AbstractMethodError 抽象方法错误。当应用试图调用抽象方法时抛出。https://www.wendangku.net/doc/524027321.html,ng.AssertionError 断言错。用来指示一个断言失败的情况。https://www.wendangku.net/doc/524027321.html,ng.ClassCircularityError 类循环依赖错误。在初始化一个类时, 个文件中读取Java类,而检测到该文件的内容不符合类的有效格式时抛出。https://www.wendangku.net/doc/524027321.html,ng.Error 错误。是所有错误的基类,用于标识严重的程序运行问题。这些问题通常描述一些不应被应用程序捕获的反常情况。https://www.wendangku.net/doc/524027321.html,ng.ExceptionInInitializerError 初始化程序错误。当执行一个类的静态初始化程序的过程中,发生了异

java异常处理例题代码

App9_1.java:输出一个数组的所有元素,捕获数组下标越界异常和除娄为0异常。public class App9_1{ public static void main(String args[]){ int i; int[] a={1,2,3,4}; for(i=0;i<5;i++) System.out.println(" a["+i+"]="+a[i]); System.out.println("5/0"+(5/0)); } } App9_2.java:使用try-catch-finall语句对程序中的异常进行捕获与处理。 public class App9_2{ public static void main(String args[]){ int i; int a[]={1,2,3,4}; for (i=0;i<5;i++){ try{ System.out.print("a["+i+"]/"+i+"="+(a[i]/i)); } catch(ArrayIndexOutOfBoundsException e){ System.out.print("捕获到了数组下标越界异常"); } catch(ArithmeticException e){ System.out.print("异常类名称是:"+e); //显示异常信息 } catch(Exception e){ System.out.println("捕获"+e.getMessage()+"异常!"); //显示异常信息 } finally{ System.out.println(" finally i="+i); } } System.out.println("继续!!"); } } App9_3.java:使用throw语句在方法中抛出异常。 public class App9_3{ public static void main(String args[]){ int a=5,b=0; try{ if (b==0) throw new ArithmeticException(); //抛出异常,不是必须的 else System.out.println(a+"/"+b+"="+a/b); //若不抛出异常,则运行此行

程序设计异常处理机制

异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误如果多个地方出现,那么你每个地方都要做相同处理,感觉相当的麻烦!Java 语言在设计的当初就考虑到这些问题,提出异常处理的框架的方案,所有的异常都可以用一个类型来表示,不同类型的异常对应不同的子类异常(这里的异常包括错误概念),定义异常处理的规范,在1.4版本以后增加了异常链机制,从而便于跟踪异常!这是Java语言设计者的高明之处,也是Java语言中的一个难点,下面是我对Java异常知识的一个总结,也算是资源回收一下。 一、Java异常的基础知识 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误https://www.wendangku.net/doc/524027321.html,ng.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出https://www.wendangku.net/doc/524027321.html,ng.ArithmeticException的异常。 有些异常需要做处理,有些则不需要捕获处理,后面会详细讲到。 天有不测风云,人有旦夕祸福,Java的程序代码也如此。在编程过程中,首先应当尽可能去避免错误和异常发生,对于不可避免、不可预测的情况则在考虑异常发生时如何处理。Java中的异常用对象来表示。Java对异常的处理是按异常分类处理的,不同异常有不同的分类,每种异常都对应一个类型(class),每个异常都对应一个异常(类的)对象。 异常类从哪里来?有两个来源,一是Java语言本身定义的一些基本异常类型,二是用户通过继承Exception类或者其子类自己定义的异常。Exception 类及其子类是Throwable的一种形式,它指出了合理的应用程序想要捕获的条件。 异常的对象从哪里来呢?有两个来源,一是Java运行时环境自动抛出系统生成的异常,而不管你是否愿意捕获和处理,它总要被抛出!比如除数为0的异常。二是程序员自己抛出的异常,这个异常可以是程序员自己定义的,也可以是Java语言中定义的,用throw 关键字抛出异常,这种异常常用来向调用者汇报异常的一些信息。 异常是针对方法来说的,抛出、声明抛出、捕获和处理异常都是在方法中进行的。 Java异常处理通过5个关键字try、catch、throw、throws、finally进行管理。基本过程是用try语句块包住要监视的语句,如果在try语句块内出现异常,则异常会被抛出,你的代码在catch语句块中可以捕获到这个异常并做处理;还有以部分系统生成的异常在Java运行时自动抛出。你也可以通过throws关键字在方法上声明该方法要抛出异常,然后在方法内部通过throw抛出异常对象。finally语句块会在方法执行return之前执行,一般结构如下: try{ 程序代码 }catch(异常类型1 异常的变量名1){ 程序代码 }catch(异常类型2 异常的变量名2){ 程序代码 }finally{ 程序代码 } catch语句可以有多个,用来匹配多个异常,匹配上多个中一个后,执行catch语句块时候仅仅执行匹配上的异常。catch的类型是Java语言中定义的或者程序员自己定义的,表示代

JAVA实验四异常处理

实验四异常处理 实验目的 1、掌握异常的概念和Java 异常处理机制。 2、掌握异常的定义、抛出和捕捉处理。 实验内容与要求 1、仔细读下面的JAVA语言源程序,自己给出程序的运行结果 import java.io.*; public class Ch31 { public static void main(String args[])throws IOException { int[] ko=new int[15]; int n,a; String x; BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter an integer:"); x=keyin.readLine(); n=Integer.parseInt(x); try { a=110/n; ko[15]=100; System.out.println("此描述无法执行!"); } catch(ArithmeticException e){ System.out.println("除数为0的错误"); } catch(ArrayIndexOutOfBoundsException f) { System.out.println("数组索引值大于数组长度的错误!"); } System.out.println("执行完catch的描述!!!"); } } 2.运行下面的程序,自己给出程序的运行结果。 import java.io.*; public class Ch32{ public Ch32(){ try{ int a[] = new int[2]; a[4] = 3; System.out.println("After handling exception return here?"); }catch(IndexOutOfBoundsException e){ System.err.println("exception msg:" + e.getMessage()); System.err.println("exception string:" + e.toString()); e.printStackTrace(); }finally{

java异常处理试题及答案

异常处理练习题 一、选择题 1.java中用来抛出异常的关键字是 (C) A、try B、catch C、throw D、finally 2.关于异常,下列说法正确的是(A) A、异常是一种对象 B、一旦程序运行,异常将被创建 C、为了保证程序运行速度,要尽量避免异常控制 D、以上说法都丌对 3.(A)类是所有异常类的父类。 A、Throwable B、Error C、Exception D、AWTError 4.java语言中,下列哪一子句是异常处理的出口(C) A、try{…}子句 B、catch{…}子句 C、finally{…}子句 D、以上说法都丌对 5.下列程序的执行,说法错误的是 (C) public class MultiCatch { public static void main(String args[]) { try { int a=args.length; int b=42/a; int c[]={1}; c[42]=99; System.out.println(“b=”+b); } catch(ArithmeticException e) { System.out.println(“除0异常:”+e); } catch(ArrayIndexOutOfBoundsException e) { System.out.println(“数组超越边界异常:”+e); } } } A、程序将输出第15行的异常信息 B、程序第10行出错 C、程序将输出“b=42”

D、程序将输出第15和19行的异常信息 6.下列程序的执行,说法正确的是(D) class ExMulti { static void procedure() { try { int c[]={1}; c[42]=99; } catch(ArrayIndexOutOfBoundsException e) { System.out.println(“数组超越界限异常:”+e); } } public static void main(String args[]) { try { procedure(); int a=args.length; int b=42/a; System.out.println(“b=”+b); } catch(ArithmeticException e) { System.out.println(“除0异常:”+e); } } } A、程序只输出第12行的异常信息 B、程序只输出第26行的异常信息 C、程序将不输出异常信息 D、程序将输出第12行和第26行的异常信息 7.下面程序抛出了一个“异常”并捕捉它。请在横线处填入适当内容完成程序。class TrowsDemo { static void procedure() throws IllegalAccessExcepton { System.out.println(“inside procedure”); throw__new_____IllegalAccessException(“demo”);

Java语言中的异常处理机制

Java语言中的异常处理机制 导语:为了加强程序的健壮性、流畅性、稳定性,就需要考虑有可能发生的异常,并进行相应的处理。下面就由为大家介绍一下Java语言中的异常处理机制,欢迎大家阅读! 1概述 在应用程序运行的过程中,经常会出现这样一些现象:用户不按照要求输入、需要进行处理的文件丢失、分母为零、数组下标超出预定范围、网络中断等,我们把这种现象称为异常。由于异常情况总是难免的,所以一个好的应用程序不仅要满足用户的基本需求,还要具备处理有可能出现的异常情况的能力,即程序必须具备较强的容错能力,把这种对异常进行处理的机制称为异常处理。对异常处理有两种常见方法:计算机系统遇到错误,给出出错信息并结束正在运行的程序;由程序员在程序中加入异常处理的功能。早期的程序设计语言没有提供专门进行异常处理的功能,程序员在编写程序的过程中,进行处理异常的代码往往和正常的代码混杂在一起,导致程序的可维护性和可读性下降。Java语言采取了异常处理机制,其方式为“抛出-捕获”,一个异常一旦产生,Java语言采取相应的机制来处理它,避免出现死循环、死机以及其他更大的危害,尽可能预防错误代码带来的不可预期的后果,整个程序的安全性得到了极大的提高。 2Java语言中的异常概述 Java语言提供了功能强大的异常处理机制,将所有处理异常的代码集中放置,以保证正常功能代码和处理异常的代码分开。在Java

程序设计语言中,采用了大量的异常类来进行处理,这些异常类可分为两大类:https://www.wendangku.net/doc/524027321.html,ng.Exception和https://www.wendangku.net/doc/524027321.html,ng.Error。Exception 类解决由程序本身及环境所产生的异常。而Error类则处理较少发生的内部系统错误。Exception类异常可以捕获并进行相应处理,而Error类异常,则是由用户按照系统提示关闭程序。常见的异常类如下表所示: 在以上常见的Java异常类中,每个异常类反映一类异常错误,其中包含了异常错误信息和处理方法。当程序运行过程中,出现一种异常现象,产生一个相应的异常类对象,再由相应的异常类进行处理,从而避免对系统产生更大的危害,以保证程序的正常运行。 3常见的异常处理方法 常见的异常处理方法有两种:一种处理异常是在产生异常的方法中,使用try…catch…finally结构;还有一种是进行异常的移交,使用关键字throws和throw交给上层方法去处理异常。 在该案例中,对三种异常进行了捕获,分别是数组下标越界、输入数据格式不正确和Exception异常,当触发某种异常,则对相应的异常异常进行处理。Exception异常类是所有异常的基类,当出现catch块没有进行捕获的异常,则采用Exception异常类进行异常处理。 异常的移交: 实例分析:初始化参数x使用了-2,将触发NegativeArraySizeException异常,但在Sum方法中不对该异常进

第九章-Java异常处理练习Word版

第九章异常 在Java应用程序中,异常处理是保证程序正常、可靠运行的一个重要方面,在前边已经遇到了简单的异常处理。本章实验将主要针对程序中常用的异常的处理及异常的应用。 9.1 实验一:异常处理及应用 实验目的 (1). 了解异常的基本概念、异常的的产生和异常处理的过程。 (2). 基本掌握异常在应用程序中的应用。 实验要求 编写应用程序,在程序中对常见的异常进行捕捉并作相应的处理。 实验内容 实验示例9.1.1 在上一章8.2.1的实验示例测试中,若没有输入答案或输入非数字字符,则在处理过程中会出现数据格式异常,修改实验示例8.2.1创建的Exercises类,添加捕获并处理异常的程序代码。 实现该示例的步骤如下: ⑴简要分析 根据题意,首先需要确定会产生异常的程序段,然后使用try~catch结构进行捕捉和处理异常地处理。由于主要处理数据格式异常,它由输入时的错误引起,所以,在处理异常时,就是返回到输入处,重新输入数据。 ⑵根据上述简要分析,给出如下修改后的参考程序代码(Exercise.java): /*这是一个小学生综合训练题测试的应用程序 *程序的名称:Exercise.java *程序中捕捉处理数据格式异常(NumberFormatException) */ import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; public class Exercises extends StudentScreen implements ActionListener,KeyListener { int count = 0; int n1=0,n2=0; int total=0; int right=0; long timenum=0; Random rand=new Random();

Java中异常处理

第13章异常课堂练习(2理论+2习题课+2上机) 【教学目标】 ?了解异常和异常处理的概貌(第13.2节)。 ?探究使用异常处理的优点(第13.3节)。 ?区别异常的类型:Error (致命的) 和Exception (非致命的), 以及必检和免检异常(第13.4节)。 ?在方法头中声明异常(第13.5.1节)。 ?在方法中抛出异常(第13.5.2节)。 ?编写try-catch 块处理异常(第13.5.3节)。 ?解释异常是如何传播的(第13.5.3节)。 ?在try-catch块中使用finally子句(第13.6节)。 ?只为非预期错误使用异常(第13.7节)。 ?在catch 块中重新抛出异常(第13.8节)。 ?创建链式异常(第13.9节)。 ?定义自定制的异常类(第13.10节)。 【教学重点】 ?了解异常的处理机制 ?异常的解决方法 ?Exception类的作用及其使用方法 ?必检异常、免检异常的特点 【基本知识点】 1、常见异常演示 (1)算数异常:https://www.wendangku.net/doc/524027321.html,ng.ArithmeticException 在算术运算中,0作为除数时,系统将产生该异常,示例: public static void main(String[] args) { int x=10; int y=0; int m=x/y; } Exception in thread "main" https://www.wendangku.net/doc/524027321.html,ng.ArithmeticException: / by zero at exception.NotChecketException.main(NotChecketException.java:7)(2)数组越界异常:https://www.wendangku.net/doc/524027321.html,ng.ArrayInd exOutOfBoundsException 在数组下标越界时,将产生该异常,示例:

Java作业实验六---异常处理

提交方式: 把文件名改为学号姓名,提交文档和源码(只需提交最顶层包文件夹) 实验六异常处理 一、实验目的 1.学会利用Try-catch-finally语句来捕获和处理异常; 2.掌握自定义异常类的方法。 二、实验要求 1.通过编程理解系统异常处理的机制和创建自定义异常的方法。 2.掌握基础类。 三、实验内容 (一)异常处理机制 1. 编写使用try…catch 语句处理异常的程序文件Demo4_1.java,

编译并运行程序,并把运行结果复制在下面 。 注意:如果在catch 语句中声明的异常类是Exception,catch 语句也能正确地捕获,这是因为Exception是ArithmeticException的父类。如果不能确定会发生哪种情况的异常,那么最好指定catch的参数为Exception,即说明异常的类型为Exception。 2、源文件是Demo3_2.java。要捕捉的异常是除数为零和数组下标越界。通过修改a和c[]下标值体验程序。 【思考】 ①先运行上面程序,观察运行结果。 ②按下条件分别修改数据,编译后运行,观察输出结果,分析在try…catch块里那些语句没有被执行,为什么? 块外那些语句可被执行到,为什么? 修改a=0,保持c[2]=200; 保持a=10,修改c[3]=200, 修改a=0,修改c[3]=200; ③再添加一个catch{Exception e}{ },位置在最前面,观察编译信息,说明什么? 3、编写Demo3_3.java 程序,计算两数相除并输出结果。使用两个catch子句,分别捕捉除数为0的异常和参数输入有误异常。源代码如下:

4M2S异常处理

4M 4M2S 异常对应方案 人员: 一人员: 1 确保每线配备班长1名、配膳员1名、修理员1名(ENTER FUSER可两线配备修理员一名),且全部培训为多能工。理由:在各线有人员流动时可确保每线2-3名的顶位人员,以保证生产品质的稳定。 2 作业自责不良发生过多时:a 各线管理管理人员及现场应自我检讨:员工作业方法是否培训到位;员工情绪是否过于波动;工治具/设备是否无异常等等;b 是否有其它不良因素影响到员工的正常作业;c 尽量少批评或采用婉转的方式教育员工。理由:作业员在正常状态下作业时,无异常或很少有异常发生,在出现自责过于频繁时应是受到其它因素的影响所致,这是作为一个管理者必须做到的;批评员工只能造成员工情绪的波动化,甚至将这一情绪带入生产中,产生更多不良。 设备/ 二设备/治工具 1 首先对各线的设备及治工具作一个易损评价,对易出现异常的设备及治工具应随时确保1-2套备品,并配备专柜存放,并确保白、晚班各有一人持有钥匙;理由:在生产因易损设备及治工具异常时可暂以备品替代使用,以确保生产线不因设备及治工具的异常而影响生产乃至出荷。 2 当设备及治工具(不易损伤且无备品类)出现异常时,应先对异常的影响的程度作出相应的评价:a 在不影响FUSER品质的情况下,可边生产边通知相关技术担当马上到现场进行修理或作出紧急处理方案;理由:异常的发生对FUSER的品质无任何影响,没必要作无畏停线安排,影响生产的正常进行。 b 在无法对异常的影响程度作出相应评价或影响FUSER品质时,应立即停止生产(出现异常的生产线),并保持异常现象,同时立即知会相关技术担当马上至现场进行修理;理由:异常的发生对FUSER的品质有影响,生产应坚持以品质确保为基本方针,在品质确保的状况下再进行生产能率的提高。不能一味地追求产量而忽视品质。 三方法 各线作业员应严格按照OIC/ACP的操作方法进行作业,当对OIC/ACP的作业方法存有疑问时,应立即报告班长并知会相关技术担当进行确认,严格按照技术担当的指示方法进行作业; 理由:1> OIC/ACP为生技人员经过实践操作总结出的操作方法; 2>生技人员对机能了解清楚,操

Java异常(习题)

java异常(习题) 练习 1. 填空 Java 中所有的错误都继承自______类;在该类的子类中, _______类表示严重的底层错误,对于这类错误一般处理的方式是___________; _______类表示例外、异常。 2. 查api,填空 异常类java.rmi.AlreadyBoundException,从分类上说,该类属于__________(已检查| 未检查)异常,从处理方式上说,对这种异常___________________; 异常类java.util.regex.PatternSyntaxException,从分类上说,该类属于_________(已检查|未检查)异常,从处理方式上说,对这种异常__________________。 4. (try-catch-finally)有如下代码:

问:当读入的n 分别为1,2,3,4,5 时,输出的结果分别是什么?

5. (自定义异常)创建两个自定义异常类MyException1 和MyException2。 要求: 1) MyException1 为已检查异常,MyException2 为未检查异常 2) 这两个异常均具有两个构造函数,一个无参,另一个带字符串参数,参数表示产生异常的详细信息。

问: 在//1 处,填入以下________代码可以编译通过,在//2 处,填入_________代码可以编译通过。 A. throws java.io.IOException B. throws java.io.FileNotFoundException, java.io.EOFException C. throws java.sql.SQLException D. 不能抛出任何异常。

最新java异常处理作业(1113132845)

Java异常处理作业 孙月巧 1、参考下面的程序,试修改程序,捕获相关异常,使得程序能正常运行。【提示:用错误数据测试,即可得到异常类名,运行时主方法参数输入abc 测试】 package November; import java.util.Scanner; public class StringIndexOutOf{ public static void main(String args[]){ System.out.println("请输入一个字符串:"); try{ Scanner reader=new Scanner(System.in); String str = reader.nextLine(); System.out.println("第四个字符为 " + str.charAt(3)); int aa = Integer.parseInt(str); System.out.println("平方为 " + aa * aa); } catch(StringIndexOutOfBoundsException e){ System.out.println("您输入的数值下标越界"); } catch(NumberFormatException nfe){ System.out.println("您输入的不是数字"); } } } 2、从命令行得到5个整数,放入一整型数组,然后打印输出,要求:如果输入数据不为整数,要捕获Integer.parseInt()产生的异常,显示“请输入整数”,捕获输入参数不足5个的异常(数组越界),显示“请输入至少5个整数”。 package November; public class Test2 { public static void main(String[] args) { System.out.println("请输入五个整数:"); try {

数据库异常处理答案

一、实验/实习过程 实验题1在程序中产生一个ArithmeticException类型被0除的异常,并用catch 语句捕获这个异常。最后通过ArithmeticException类的对象e 的方法getMessage给出异常的具体类型并显示出来。 package Package1; public class除数0 { public static void main(String args[]){ try{ int a=10; int b=0; System.out.println("输出结果为:"+a/b); } catch(ArithmeticException e){ System.out.println("除数不能为0"+e.getMessage()); } } } 实验题2在一个类的静态方法methodOne()方法内使用throw 产生ArithmeticException异常,使用throws子句抛出methodOne()的异常,

在main方法中捕获处理ArithmeticException异常。 package Package1; public class抛出异常 { static void methodOne() throws ArithmeticException{ System.out.println("在methodOne中"); throw new ArithmeticException("除数为0"); } public static void main(String args[]){ try{ int a=10; int b=0; int c=1; System.out.println("输出结果为:"+a/b); } catch(ArithmeticException e){ System.out.println("除数不能为0"+e.getMessage()); } } }

JAVA基础第6章异常处理机制_练习题

第6章异常处理机制 一、选择题 1.下列关于异常的说法正确的是(B)。 A.异常是编译时的错误 B.异常是运行时出现的错误 C.异常就是程序错误,程序错误就是异常 D.以上都不对 2.下列哪个类是异常类的父类(根类)(A)。 A.Exception B.ArithmeticException C.NullPointerException D.ArrayIndexOutofBoundException 3.有关下列异常处理机制叙述正确的是(C)。 try{ 可能产生异常的语句块; }catch(exceptiontype1 e){ 处理异常e的语句块; }catch(exceptiontype2 e){ 处理异常e的语句块; } …… finally{ 最终处理语句块; } A.try子句可能有多个,catch子句可能有多个,finally子句必须有。 B.多个catch参数中的异常类可以有父子关系,但父类异常的catch子句应该在子类异常的catch子句前面。 C.如果try子句没有抛出任何异常,则跳过catch子句,转移到finally子句继续执行。 D.当try子句监视的语句块抛出异常时,运行时系统会根据catch子句的顺序,从第一个开始,逐个查找能够捕获该异常的catch子句并执行catch子句内的语句块以完成对异常的处理,然后继续执行后面的catch子句,最后转移到finally子句,执行该子句中的语句块。4.有关throw和throws的说法中不正确的是(C)。 A.throw的作用是抛出异常,后面加的是异常类的对象。 B.throws的作用是向外抛出异常即声明要产生的若干异常,后面加的是异常类的类名。 C.throws只能声明要产生的自定义异常,也就是后面只能加自定义异常类。 D.以上都不对。 5.下列程序运行结果是(C)。 public class E { public static void main(String argv[]){ E m = new E(); System.out.println(m.amethod()); } public int amethod(){

解决问题心得体会

[“解决问题”研讨会学习心得体会] 今天的“解决问题”专题研讨会先是听了两节课,:“解决问题”研讨会学习心得体会。 听了年轻老师宋娅的课,让我们感知了“解决问题”的教学策略,找到了自己与宋老师之间的差距。我在平常的解决问题的教学中小组讨论的较少,在今后的教学中要多设计此环节,让学生在交流中掌握新知。 听了刘光荣老师的课,让我回想起了我的小学数学老师,他的课用综合法,让学生分析数量关系,找出已知条件,并说明它是哪个量,找出问题是什么,求哪个量,心得体会《“解决问题”研讨会学习心得体会》这样的课很扎实,也给我们提供了一种教学思路。 在今后的教学中,我要把年轻教师注重培养学生的小组合作交流与年长老师的综合法两者有效的结合起来,让学生即有一个生动的情境学解决问题,又能分析数量关系,学得扎实。 听了高主任和张主任的报告,让我理清了教学“解决问题”的思路,明确了今后工作的重点是什么,以及如何处理这部分教材,让我明白了以前似是而非拿不准的东西,找到了教学的方向。令我记忆犹新的是其中的一条建议:“加强数量之间的分析,三量之间的逆变关系,记住常见的数量关系。如工效、路程、总价。”“会用数学语言表述数量关系。”这两条建议对学生数学解题能力的

提高有很多的帮助作用。这几年的改革改的摸不着头脑,让我们失去了方向,通过今天的学习让我们明确了改怎样传承旧的教学方法,怎样将新旧两种教法有机的结合起来。

[小学数学作业评价改革经验交流会学习心得体会] 纳雍乡杨柳小学张凤 我有幸参加了中心校组织的小学数学作业评价改革经验交流会的活动,这次会议有三项内容:一是观摩了上海虞怡玲老师执教的《植树问题》,二是中心小学三年级二班的数学作业展览,三是听取了《小学数学作业评价改革经验交流》的报告,小学数学作业评价改革经验交流会学习心得体会。通过这次学习活动使我受益匪浅,现总结如下: 罗卫老师执教的“植树问题”一课突出了数学思想方法这条 主线,从贴近学生生活实际和原有知识基础入手,通过学生实践体验、寻找规律、主动探究,归纳总结数量关系,拓展了学生原有的知识结构,使学生在合作交流探究过程中体验、感悟了数学思想方法,体现了新课程理念教学。主要表现在以下几点:1.突破传统,立意精准。 植树问题走进课堂,作为数学拓展内容如果处理不好往往会走进传统的解题训练上,学生如果没有得到充分的体验往往不能充分理解“棵数”与“段数”以及“总长、段数、段长”之间的关系,导致学生死记硬背“棵数=段数+1”、“棵数=段数-1”“棵数=段数”的结论,而不知其中缘由。这堂课罗老师避开了就题解题,充分考虑学生的认知规律,为学生搭建探究的“脚手架”,在剪绳子过程中,“生成画图、找规律、推算的方法框架”,这样设计的

Java异常处理总结(精)

Java 异常处理总结 找到一个关于异常总结的很详细的文章, 分享下. 异常在我们编程中很重,在适当的位置,合理的处理或者抛出异常,对程序来说至关重要。转:异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C 开始,你也许已经知道如何用if...else... 来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误如果多个地方出现,那么你每个地方都要做相同处理,感觉相当的麻烦! Java 语言在设计的当初就考虑到这些问题,提出异常处理的框架的方案,所有的异常都可以用一个类型来表示,不同类型的异常对应不同的子类异常(这里的异常包括错误概念),定义异常处理的规范,在1.4版本以后增加了异常链机制,从而便于跟踪异常!这是Java 语言设计者的高明之处,也是Java 语言中的一个难点,下面是我对Java 异常知识的一个总结,也算是资源回收一下。 一、Java 异常的基础知识 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误https://www.wendangku.net/doc/524027321.html,ng.Error ;如果你用System.out.println(11/0,那么你是因为你用0做了除数,会抛出https://www.wendangku.net/doc/524027321.html,ng.ArithmeticException 的异常。有些异常需要做处理,有些则不需要捕获处理,后面会详细讲到。天有不测风云,人有旦夕祸福,Java 的程序代码也如此。在编程过程中,首先应当尽可能去避免错误和异常发生,对于不可避免、不可预测的情况则在考虑异常发生时如何处理。 Java 中的异常用对象来表示。Java 对异常的处理是按异常分类处理的,不同异常有不同的分类,每种异常都对应一个类型(class ),每个异常都对应一个异常(类的)对象。 异常类从哪里来?有两个来源,一是Java 语言本身定义的一些基本异常类型,二是用户通过继承Exception 类或者其子类自己定义的异常。Exception 类及其

java 日期及异常处理机制

Date、String、Calendar类型之间的转化 1.Calendar 转化String //获取当前时间的具体情况,如年,月,日,week,date,分,秒等Calendar calendat = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String dateStr = sdf.format(calendar.getTime()); 2.String 转化Calendar String str="2010-5-27"; SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd"); Date date =sdf.parse(str); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); 3.Date 转化String SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd"); String dateStr=sdf.format(new Date()); 4.String 转化Date String str="2010-5-27"; SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd"); Date birthday = sdf.parse(str); 5.Date 转化Calendar Calendar calendar = Calendar.getInstance(); calendar.setTime(new java.util.Date()); 6.Calendar转化Date Calendar calendar = Calendar.getInstance(); java.util.Date date =calendar.getTime();

JAVA实验报告5 异常处理实验

中南财经政法大学武汉学院实验报告 实验课名称:__JAVA语言____ 学生姓名:_______ 专业班级:__网络工程1104 学号:11071125__ 开课时间:___2013年2月26日_ 教务处制

《Java程序设计基础》实验报告 实验序号:05实验项目名称:异常处理 学号11071125姓名专业、班级 实验地点计-202指导教师时间2013-5-14一、实验目的及要求 了解异常处理机制; 了解异常的概念; 掌握抛出异常、捕获异常和异常处理的方法; 了解自定义异常类的定义和使用方法。 二、实验设备(环境)及要求 1、Windows-XP操作系统 2、Eclipse应用程序 三、实验内容与步骤 编写一个类ExceptionTest1,在main方法中使用try、catch、finally: ①在try块中,编写被0除的代码。 ②在catch块中,捕获被0除所产生的异常,并且打印异常信息。 ③在finally块中,打印一条语句。 四、实验结果与数据处理 import java.util.*; public class ExceptionTest1{ public static void main(String[]args){ Scanner in=new Scanner(System.in); try{ System.out.print("请输入被除数:"); double beichushu=in.nextDouble(); System.out.print("请输入除数:"); double chushu=in.nextDouble(); if(chushu==0) throw new ArithmeticException("请输入不为0的数字!"); double i=(beichushu/chushu); System.out.println("二者的商为:"+i);}catch(InputMismatchException e1){ System.out.println("请输入数字!");

相关文档