JAVA异常处理作业(20121113132845)
java异常处理方法及流程
java异常处理方法及流程Java 异常处理方法及在 Java 编程中,异常处理是一项非常重要的技术。
通过适当的异常处理方法,可以使程序具备更好的稳定性和可读性,提高程序的健壮性。
本文将详细介绍 Java 异常处理的各个流程。
异常的基本概念异常是在程序执行期间产生的一种错误或异常情况。
Java 引入了异常处理机制来处理这些异常,以提高程序的可靠性和可维护性。
异常分为两种类型:1.受检异常(Checked Exceptions):受检异常在编译阶段必须进行处理,否则编译器将报错。
例如,IOException 是常见的受检异常。
2.非受检异常(Unchecked Exceptions):非受检异常是指不需要显式捕获或声明抛出的异常,编译器不会检查是否对其进行处理。
例如,NullPointerException 是常见的非受检异常。
异常处理的方法Java 提供了多种处理异常的方法,包括捕获异常和抛出异常。
下面分别进行介绍。
捕获异常是指通过使用try-catch语句块来捕获并处理异常。
try语句块用于包裹可能出现异常的代码,catch语句块用于捕获并处理异常。
try {// 可能抛出异常的代码块// ...} catch (ExceptionType1 e1) {// 处理异常类型1// ...} catch (ExceptionType2 e2) {// 处理异常类型2// ...} finally {// 可选的 finally 代码块,始终会被执行// ...}抛出异常当一个方法无法处理某个异常时,可以通过throw关键字手动抛出异常。
异常将会被传递给调用该方法的代码,并进一步处理。
public void someMethod() throws SomeException {if (someCondition) {throw new SomeException("Some error message");}使用异常的注意事项在使用异常处理时,需要注意以下几点:•捕获异常的顺序非常重要,应该从特定异常到一般异常的顺序进行捕获。
Java异常处理
Java 2007
6.1.2 Java进行异常处理的大致过程 进行异常处理的大致过程
在Java中,是用面向对象的方法来处理异常的。在一 中 是用面向对象的方法来处理异常的。 个方法的运行过程中,如果发生了异常,则这个方法生成 个方法的运行过程中,如果发生了异常, 代表该异常的一个对象,并把它交给运行时系统, 代表该异常的一个对象,并把它交给运行时系统,运行时 系统寻找相应的代码来处理这一异常。 系统寻找相应的代码来处理这一异常。我们把生成异常对 象并交给运行时系统的过程称为抛出一个异常 抛出一个异常( 象并交给运行时系统的过程称为抛出一个异常(throw)。 ) 运行时系统在方法的调用栈中查找, 运行时系统在方法的调用栈中查找,从生成异常的方法开 始回溯,直到找到包含相应异常处理的代码为止, 始回溯,直到找到包含相应异常处理的代码为止,这一过 捕获一个异常( 程称为捕获一个异常 ) 程称为捕获一个异常(catch)(如果没有找到相应异常处 理的方法,则运行时系统将终止程序的运行) 理的方法,则运行时系统将终止程序的运行) 。
Java 2007
运行时异常实例1 例6.1 Java运行时异常实例 运行时异常实例 class ArrayOutOf { public static void main(String[ ] args) { char[ ] buf = {'a', 'b', 'c'}; 结果: 结果:
a b for (i = 0; c < buf.length; i++) i Exception in thread "main" System.out.println(buf[i]); ng.ArrayIndexOutOfBoundsException at ArrayOutOf.main(ArrayOutOf.java:8) System.out.println(buf[i]);
实验十一 Java中的异常处理
实验十一Java中的异常处理x=n.nextInt();if(x!=999)sum+=x;}catch(InputMismatchException e){}System.out.println(sum);}}}class TestXin{/*** @param args*/public static void main(String[] args) { // TODO Auto-generated method stubXin n=new Xin();System.out.println(n);}}结果:五、实验总结(对本实验结果进行分析, 实验心得体会及改进意见)5.分析程序的运行结果(1)class A{A(){System.out.println("A structure!");}A(int m){System.out.println("A("+m+")");}}public class B extends A{B(int m){System.out.println("B("+m+")");}public static void main(String[] args) { // TODO Auto-generated method stubnew B(100);}}(2)class A{A(){System.out.println("A structure!");}A(int m){System.out.println("A("+m+")");}}public class B extends A{B(){System.out.println("B structure!");}B(int m){System.out.println("B("+m+")");}public static void main(String[] args) { // TODO Auto-generated method stubnew B(100);}}(3)class A{A(){System.out.println("A structure!");}A(int m){System.out.println("A("+m+")");}}public class B extends A{B(){System.out.println("B structure!");}B(int m){//super(m);System.out.println("B("+m+")");}public static void main(String[] args) { new B(100);}}(4)class A{A(){System.out.println("A structure!");}A(int m){System.out.println("A("+m+")");}}public class B extends A{B(int m){super(m);//System.out.println("B("+m+")");}public static void main(String[] args) { new B(100);} }。
Java异常处理课后作业
int i=0, j=1, k; //k=i/j;
try {
k = i/j; // Causes division-by-zero exception //throw new Exception("Hello.Exception!"); }
动手动脑:多层的异常捕获-1
动手动脑:多层的异常捕获-2
动手动脑2:
当有多层嵌套的finally时,异常在不同的层次抛出,在不同的位置抛出,可能会导致不同的finally语句块执行顺序。
动手动脑3:
当存在try中有throw new Exception(...)finally不会执行。
动手动脑4
import java.util.Scanner; public class Score { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println("输入学生成绩(整数):"); try { int num=input.nextInt(); if(num>100) { System.out.println("超出范围!"); } else if(num<=100&&num>=90) { System.out.println("优!"); } else if(num<90&&num>=80) { System.out.println("良!"); } else if(num<80&&num>=70) { System.out.println("中!"); } else if(num<70&&num>=60) { System.out.println("及格!"); } else { System.out.println("不及格!"); }
2012java教程第7章 异常处理
异常均派生于Throwable类。Throwable类提供 printStackTrace方法打印方法调用堆栈。通常,这在 测试和调试中是有用的。Throwable类还提供 getStackTrace方法,以获取printStackTrace 方法所 打印的堆栈记录信息。Throwable类的getMessage 方法返回异常所存储的描述行字符串。
自定义异常
在自定义异常的时候需要遵循的规则是:自定 义异常类必须是Throwable的子类而更多的时候自 定义的异常类都继承自Exception。
异常处理中需要注意的几点
丢弃异常 不指定具体的异常 占用资源不释放 不说明异常的详细信息 过于庞大的try块 输出数据不完整Fra bibliotekLOGO
JAVA程序语言设计 JAVA程序语言设计
陈明 编著
第七章 异常处理
异常概述 Java中的异常以及分类 异常发生的情形 异常处理语句 自定义异常 异常处理中需要注意的几点
异常概述
所谓的“异常”(Exception),是在运行时程序 代码序列中产生的一种异常情况,异常事件。早 期的语言如C语言是没有异常处理机制的,通常 遇到错误返回一个特殊的值或设定一个标志,并 以此判断是不是有错误产生。
异常处理语句
在Java中当程序产生异常的时候,有两种异常处 理机制:捕获异常和声明抛出异常。与异常有关 的关键字有try 、catch、throw、throws和finally 。通过try、catch、finally关键字实现捕获异常, 通过throw, throws关键字声明抛出异常。
printStackTrace、getStackTrace和getMessage 、 和
嵌套try语句 嵌套 语句
java异常处理实验报告
java异常处理实验报告Java异常处理实验报告一、实验目的本次实验旨在通过编写Java程序,学习和掌握异常处理的相关知识和技巧,提高代码的健壮性和可靠性。
二、实验环境本次实验使用的开发环境为Eclipse,使用Java语言进行编程。
三、实验内容1. 异常的概念异常是指程序在运行过程中出现的意外情况,例如除零错误、数组越界等。
Java中的异常是以类的形式存在的,所有异常类都是Throwable类的子类。
2. 异常处理的方法Java提供了try-catch-finally语句用于处理异常。
在try块中编写可能会抛出异常的代码,如果发生异常,则会跳转到对应的catch块进行处理。
finally块中的代码无论是否发生异常都会被执行。
3. 异常的分类Java中的异常分为两种类型:受检异常(Checked Exception)和非受检异常(Unchecked Exception)。
受检异常需要在代码中显式地进行处理,否则编译器会报错;而非受检异常不需要强制处理。
4. 自定义异常除了使用Java提供的异常类,我们还可以根据需要自定义异常类。
自定义异常类需要继承Exception类或RuntimeException类,并重写相应的方法。
5. 异常处理的最佳实践在实际的软件开发中,异常处理是非常重要的一部分。
以下是一些异常处理的最佳实践:- 尽早捕获异常:在代码中尽量早地捕获异常,以避免异常的传播和影响其他部分的代码。
- 适当处理异常:根据具体情况,选择合适的处理方式,可以是打印日志、返回默认值、抛出新的异常等。
- 避免捕获过宽的异常:捕获异常时要尽量精确,避免捕获过宽的异常类型,以免屏蔽了真正的问题。
四、实验步骤1. 创建一个Java项目,并新建一个类用于实现异常处理的实验。
2. 编写代码,在try块中编写可能会抛出异常的代码。
3. 使用catch块捕获异常,并进行相应的处理,例如打印异常信息。
4. 在finally块中编写必要的代码,例如资源的释放。
java异常处理实验报告
java异常处理实验报告Java异常处理实验报告引言:异常处理是Java编程中非常重要的一部分,它能够帮助我们优雅地处理程序中可能出现的错误情况,提高程序的健壮性和稳定性。
本实验旨在通过编写一段简单的Java代码,来探索异常处理的机制和应用。
实验过程:在实验中,我们编写了一个简单的Java程序,用于模拟一个学生信息管理系统。
该程序包含了以下几个功能:添加学生信息、查询学生信息、删除学生信息和修改学生信息。
在每个功能中,我们故意引入了一些可能导致异常的情况,以便验证异常处理的效果。
首先,我们创建了一个名为"Student"的类,用于表示学生的信息。
该类包含了学生的姓名、年龄和成绩等属性,并提供了相应的getter和setter方法。
接着,我们创建了一个名为"StudentManagementSystem"的类,用于实现学生信息的管理功能。
在添加学生信息的功能中,我们通过捕获可能抛出的"NullPointerException"异常来处理可能出现的空指针异常。
当用户输入的学生信息为空时,程序将抛出该异常并给出相应的提示信息,避免程序崩溃。
在查询学生信息的功能中,我们通过捕获可能抛出的"IndexOutOfBoundsException"异常来处理可能出现的数组越界异常。
当用户输入的学生索引超出了学生信息数组的范围时,程序将抛出该异常并给出相应的提示信息,避免程序崩溃。
在删除学生信息的功能中,我们通过捕获可能抛出的"NumberFormatException"异常来处理可能出现的数字格式异常。
当用户输入的学生索引不是一个合法的数字时,程序将抛出该异常并给出相应的提示信息,避免程序崩溃。
在修改学生信息的功能中,我们通过捕获可能抛出的"InputMismatchException"异常来处理可能出现的输入不匹配异常。
java异常处理
在生活中,异常情况随时都有可能发生。
比如,小王每天去上班,耗时大约30分钟,如果,由于车多,路窄,异常情况总是不可避免的要发生。
这就是生活中的异常。
那么在程序运行过程中会不会发生异常。
程序中的异常我们先看以下代码Code:1.import java.util.Scanner;2.3.public class HelloA**4.{5.public static void main(String args [])6. {7. Scanner input = new Scanner(System.in);8.9. System.out.println("请输入课程代号:");10.11.int CourseCode = input.nextInt();12.13.switch(CourseCode)14. {15.case1:16. System.out.println("C#编程");17.break;18.case2:19. System.out.println("JAVA编程");20.break;21.case3:22. System.out.println("SQL基础");23.break;25. }26.}正常情况下,用户会根据要求需要1-3编号中的一个但是,如果用户不按照要求,输入一个B的话,那么程序在运行时,就会发生异常.从以上,我们可以看出,异常就是在程序运行过程中所发生的不正常的事件,它会中断正在运行的程序.那么,如果碰到了这种情况的话,我们应该怎么样去处理呢?异常处理一、异常处理机制JAVA编程语言中的异常处理机制是JAVA针对一些错误预定义的一些处理方法。
这个过程称之为异常处理。
二、JAVA中如何进行异常处理JAVA中的异常处理是通过5个关键字来实现的:try catch finally throw throws1.public class Test2.{3.public void throwException (int i ) throws Exception4. {5.if(i == 1)6.throw new Exception();7. }8.9.public void method()10. {11.try12. {13. throwException(1);14. }15.catch(Exception ex)16. {17. System.out.println("捕获到异常了");18. }19.finally20. {21. System.out.println("finally块中的代码一定会执行");23. }24.}下面,我们来分析一下以上代码try:当某段代码执行过程中,可能会发生异常的话,我们应该把这段代码放进try语句块中catch:在catch语句块中捕获异常。
java 异常处理方法
java 异常处理方法(实用版4篇)目录(篇1)I.引言A.介绍Java异常处理的重要性B.本文将介绍三种常见的Java异常处理方法II.异常处理方法A.异常分类1.未检查异常2.检查异常3.受检异常B.异常处理流程1.抛出异常2.捕获异常3.处理异常C.异常处理技巧1.使用try-catch语句2.使用throws关键字3.使用throw语句正文(篇1)Java异常处理是Java编程中非常重要的一部分,它可以帮助开发人员更好地处理程序中的错误和异常情况。
在Java中,开发人员可以使用三种常见的异常处理方法:未检查异常、检查异常和受检异常。
A.未检查异常未检查异常也称为运行时异常,它们通常是由于程序中的错误或意外情况引起的。
开发人员可以使用throw语句来抛出未检查异常。
例如,当用户输入无效的数据时,可以使用throw语句抛出一个运行时异常。
B.检查异常检查异常也称为checked exception,它们需要在方法声明中显式地声明。
检查异常通常用于表示程序中的错误或异常情况,需要在编译时进行检查。
例如,当读取文件时,可能会发生IOException,需要在方法声明中声明该异常。
C.受检异常受检异常也称为内置异常,它们是Java内置的异常类型,例如NullPointerException和ArrayIndexOutOfBoundsException。
目录(篇2)1.引言2.Java异常处理简介3.Java异常分类及用途4.异常处理流程及步骤5.异常处理优缺点6.总结正文(篇2)一、引言Java是一种非常流行的编程语言,广泛应用于软件开发领域。
Java 程序员常常会遇到各种各样的问题,如编译错误、运行时错误等。
为了解决这些问题,Java提供了异常处理机制。
异常处理可以帮助程序员在程序中处理错误和异常情况,从而提高程序的稳定性和可靠性。
二、Java异常处理简介Java异常处理包括捕获和处理异常。
当程序出现错误或异常情况时,Java会自动抛出异常,程序员可以使用try-catch语句块来捕获和处理这些异常。
JAVA_异常处理实验报告
JAVA_异常处理实验报告实验三异常处理[实验目的]1. 掌握异常处理方法及熟悉常见异常的捕获方法。
[实验内容]1. 练习捕获异常、声明异常、抛出异常的方法、熟悉try和catch子句的使用。
[实验步骤]第1题异常处理要求声明定义两个Exception的异常子类:NoLowerLetter类和NoDigit类。
再声明一个People类~该类中的void printLetter(charc)方法抛出NoLowerLetter异常类对象~void PrintDigit(char c)方法抛出NoDigit异常类对象。
class NoLowerLetter extends Exception{String message;NoLowerLetter(char c){message=c+"不是正数";}public String getMessage(){return message;}}class NoDigit extends Exception{String message;NoDigit(char c){message=c+"不是偶数";}public String getMessage(){return message;}1}class People{public void printLetter(char c) throws NoLowerLetter{ if(c<0){NoLowerLetter ex=new NoLowerLetter(c);throw(ex);}double number=Math.sqrt(c);System.out.println(c+"的平方根:"+number);}public void PrintDigit(char c) throws NoDigit{if(c%2!=0){NoDigit ex=new NoDigit(c);throw(ex);}double number=Math.sqrt(c);System.out.println(c+"的平方根:"+number); }}public class bianma{public static void main(String args[]){ People p=new People();try{p.printLetter('Q');p.printLetter(' ');}catch( NoLowerLetter e){System.out.println(e.getMessage());}try{p.PrintDigit('d');p.PrintDigit('a');}catch( NoDigit e){System.out.println(e.getMessage());}}}将结果运行截屏贴在下面:23。
《java的异常处理》课件
`IOException`、`NullPointerException`等
抛出异常的规则
9字
避免在方法签名中声明抛出 异常,除非该方法确实会抛 出异常
9字
在`try`块后使用`catch`块来 处理异常,或者在方法签名 中声明抛出异常,让调用者 处理异常
9字
在可能抛出异常的代码块前 使用`try`块,将可能抛出异 常的代码放在`try`块中
04
抛出异常
抛出异常的时机
无法处理或恢复的错误情况
程序逻辑错误,如除以零或数组越界
输入数据不符合预期格式或范围 外部资源不可用,如文件不存在或数据库 连接失败
抛出异常的方式
01 使用`throw`关键字抛出异常对象
02
抛出异常对象时,可以附加异常信息,以帮助理解异
常的原因和上下文
03
可以抛出自定义异常类或Java标准库中的异常类,如
案例三:文件未找到异常处理
总结词
文件未找到异常是Java中常见的IO异常,处 理不当可能导致程序崩溃。
详细描述
当程序中打开一个不存在的文件时,就会抛 出FileNotFoundException异常。处理这种 异常的方法包括在打开文件前,先判断文件 是否存在,如果不存在则创建文件或抛出异 常。同时,也可以使用try-catch语句块捕 获异常,或者在可能出现异常的代码前使用 if条件判断来避免异常发生。
示例
如果一个方法需要读取一个文件 ,但文件不存在,那么在运行时 可能会抛出文件找不到异常。
自定义异常
总结词
详细描述
示例
自定义异常是Java中允许程序 员自定义的异常类型,它们可 以继承自已有的异常类或实现 自定义的异常接口。
java异常处理方法
java异常处理方法异常是指程序在运行过程中发生的错误或意外情况。
Java提供了异常处理机制,可以帮助我们捕获和处理异常,提高程序的可靠性和稳定性。
在Java中,异常被表示为对象,并通过抛出(throw)和捕获(catch)机制进行处理。
Java异常处理的主要方法包括:1. try-catch语句块try-catch语句块是Java异常处理的基本方法。
try块中包含可能会产生异常的代码,catch块用于捕获并处理这些异常。
当try块中的代码发生异常时,程序会跳转到对应的catch块进行处理。
try-catch语句块的基本语法如下:```javatry//可能会发生异常的代码} catch (ExceptionType1 exception1)//处理异常1的代码} catch (ExceptionType2 exception2)//处理异常2的代码} finally// 可选的finally块,用于执行无论是否发生异常都要执行的代码```在try块中可能会发生多种异常,catch块可以分别捕获并处理这些异常。
异常是按照catch块的顺序进行匹配的,只会处理第一个匹配的异常。
可以根据具体情况处理不同类型的异常,并在finally块中执行无论是否发生异常都要执行的代码。
2. throws关键字throws关键字用于声明方法可能会抛出的异常类型,将异常的处理交给调用该方法的代码。
当方法内部发生异常时,可以选择捕获并处理异常,也可以将异常通过throws关键字抛出。
throws关键字的使用格式如下:```java[access_modifier] [return_type] methodName([parameters]) throws [exception_list]//方法体```方法体中可能产生异常的代码可以使用try-catch语句进行处理,也可以在方法头部使用throws关键字抛出异常。
3. try-with-resources语句try-with-resources语句是用于处理流资源的一种简化语法。
Java中的异常处理
Java中的异常处理异常是在程序执行过程中遇到的问题或错误,它们可能导致程序中断或产生未预期的行为。
Java中的异常处理机制允许开发人员捕获和处理这些异常,以确保程序能够正常运行并提供更好的用户体验。
一. 异常分类Java中的异常可以分为两种类型:可检查异常(Checked Exception)和不可检查异常(Unchecked Exception)。
可检查异常是指在代码编译期间就必须捕获或声明抛出的异常,否则编译器会报错。
这种异常通常表示程序的外部条件发生了错误或异常情况,比如文件不存在、网络连接断开等。
开发人员在编写代码时必须处理这些异常,以保证程序的稳定性和可靠性。
不可检查异常是指在代码编译期间无需捕获或声明抛出的异常,通常是由于开发人员的编程错误导致的,比如空指针引用、数组越界等。
这种异常在运行时会被JVM自动捕获并终止程序的执行。
虽然开发人员不需要显式处理这些异常,但应该尽量避免发生此类异常的情况。
二. 异常处理方式在Java中,开发人员可以使用try-catch语句块来捕获和处理异常。
try块中包含可能引发异常的代码,而catch块则用于捕获和处理异常。
以下是一个简单的示例:```javatry {// 可能引发异常的代码// ...} catch (Exception e) {// 处理异常的代码// ...}```在上述示例中,如果try块中的代码引发了异常,程序会立即跳转到catch块,并执行catch块中的代码来处理异常。
catch块后面可以跟上多个不同类型的异常进行捕获和处理。
除了try-catch语句块,Java还提供了try-finally语句块来确保无论是否发生异常都能执行某些特定的代码。
finally块中的代码无论在何种情况下都会被执行,它通常用于释放资源、关闭文件等操作。
```javatry {// 可能引发异常的代码// ...} finally {// 执行必要的清理操作// ...}```在上述示例中,无论try块中的代码是否引发异常,finally块中的代码都会被执行。
java中处理异常的方法
java中处理异常的⽅法在java中,对于异常,⼀般使⽤throw抛出异常或者使⽤try catch 处理异常1.使⽤throw关键字throw⽤在⽅法内,⽤来抛出⼀个异常对象,将这个异常对象传递到调⽤者处,并结束当前⽅法的执⾏格式:throw new XXXException("输出信息");注意:a.throw关键字必须写在⽅法的内部b.throw关键字后边的new对象必须是Exception或者Exception的⼦类对象c.throw关键字抛出指定的异常对象,我们就必须处理这个异常对象i. 如果throw关键字后⾯抛出的是RuntimeException或者RuntimeException的⼦类对象,我们可以不处理,默认交给JVM处理(在控制台打印出异常,并中断程序)ii. 如果throw关键字后⾯抛出的是编译异常,我们就必须处理这个异常,使⽤throws或者try...catch2.throws关键字的使⽤关键字throws运⽤于⽅法声明之上,⽤于表⽰当前⽅法不处理异常,⽽是提醒该⽅法的调⽤者来处理异常(抛出异常)格式:修饰符返回值类型⽅法名(参数列表)throws AException,BException...{ throw new AException("产⽣原因"); throw new BException("产⽣原因"); ... }注意:a.throws关键字必须写在⽅法声明处b.throws关键字后边声明的异常必须是Exception或者是Exception的⼦类c.⽅法内部如果抛出了多个异常,那么throws后⾯必须也声明多个异常如果抛出的多个异常对象存在⼦⽗类关系,那么直接声明⽗类即可d.调⽤了⼀个声明抛出异常的⽅法,我们就必须处理声明的异常i.继续使⽤throws声明抛出,交给⽅法的调⽤者处理,最终交给JVM处理ii.使⽤try...catch⾃⼰处理异常3.使⽤try...catch捕获异常格式: try{ 编写可能会出现异常的代码 }catch(异常类型 e){ 处理异常的代码 //记录⽇志/打印异常信息/继续抛出异常 }异常的捕获的⼏种⽅式: 1. 多个异常分别处理。
Java异常处理
Java异常处理机制Java对异常的处理是面向对象的,也就是把异常当做对象来处理。
当异常情况发生时,会创建一个代表该异常的对象,而且在错误出现的地方将这个异常抛出(throw或引发)。
异常有两种:一种是由运行时系统自己产生的异常,另一种是由用户代码用throw抛出的异常。
Java中一共提供了try|、catch、finally、throw和throws 5个关键字来处理异常。
其中,try-catch-finally需要配套使用,他们用来捕获和处理异常。
throw用于抛出异常,throws用于声明有异常抛出。
通常的异常语句处理块如下所示:try{可能产生错误需要监视的语句序列}catch(异常类型1 对象名){处理该异常的语句序列}catch(异常类型2 对象名){处理该异常的语句序列}……catch(异常类型n 对象名){处理该异常的语句序列}finally{资源保护语句序列}它的基本语法规则如下:⏹try语句是必须的,他中间的语句序列一旦发生异常,将有可能被捕获。
⏹catch语句是可选的,可以有0个或多个。
括号中的异常类型必须各不相同。
一旦try发生了异常,系统将从上往下依次查找catch 语句中是否有异常类型与其匹配,匹配成功就进入到该catch语句快中。
⏹ finally 语句是资源保护块,也是可选的,可以有0个或1个。
无论是否发生了异常,也无论异常是否被catch 语句捕获,finally 语句都会保证在最后被执行。
⏹ catch 和finally 语句至少存在其中的一条。
所有的异常类都是由Throwable 类派生出来的,他有两个直接子类:Error 和Exception ,他们分别用来处理两类异常,他们又分别派生出若干子类,层次关系如下图所示:图中的Error 类及其子类用来处理系统内部及程序运行环境的异常,一般与硬件有关,由系统直接处理,不需要程序员在程序中处理。
Exception 及其子类是程序抛出的异常,它又可分为两大类:运行时异常和编译时异常。
Java异常处理
Java异常处理⼀、异常体系结构1、异常:在Java语⾔中,将程序执⾏中发⽣的不正常情况称为“异常” 。
(开发过程中的语法错误和逻辑错误不是异常)2、Java程序在执⾏过程中所发⽣的异常事件可分为两类:1)Error:Java虚拟机⽆法解决的严重问题。
如:JVM系统内部错误、资源耗尽等严重情况。
⽐如:StackOverflowError和OOM。
⼀般不编写针对性的代码进⾏处理。
2)Exception: 其它因编程错误或偶然的外在因素导致的⼀般性问题,可以使⽤针对性的代码进⾏处理。
例如: 空指针访问 试图读取不存在的⽂件 ⽹络连接中断 数组⾓标越界3、错误处理⼀是遇到错误就终⽌程序的运⾏。
另⼀种⽅法是由程序员在编写程序时,就考虑到错误的检测、错误消息的提⽰,以及错误的处理。
捕获错误最理想的是在编译期间,但有的错误只有在运⾏时才会发⽣。
⽐如:除数为0,数组下标越界等4、Exception分类:编译时异常和运⾏时异常1)运⾏时异常:是指编译器不要求强制处置的异常。
⼀般是指编程时的逻辑错误,是程序员应该积极避免其出现的异常。
ng.RuntimeException类及它的⼦类都是运⾏时异常。
对于这类异常,可以不作处理,因为这类异常很普遍,若全处理可能会对程序的可读性和运⾏效率产⽣影响。
2)编译时异常:是指编译器要求必须处置的异常。
即程序在运⾏时由于外界因素造成的⼀般性异常。
编译器要求Java程序必须捕获或声明所有编译时异常。
对于这类异常,如果程序不处理,可能会带来意想不到的结果。
⼆、常见异常1、ng.RuntimeException1)ClassCastException //类型转换异常2)ArrayIndexOutOfBoundsException3)NullPointerException4)ArithmeticException //算术异常5)NumberFormatException //数据格式不匹配6)InputMismatchException 。
java异常处理作业(1113132845)上课讲义
j a v a异常处理作业(20121113132845)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 {}catch (NumberFormatException n) {System.out.println("请输入整数");} catch (ArrayIndexOutOfBoundsException e) {System.out.println("请输入至少5个整数");}catch (Exception e) {System.out.println(e.getMessage());}}}3、写一个方法void sanjiao(int a,int b,int c),判断三个参数是否能构成一个三角形,如果不能则抛出异常IllegalArgumentException,显示异常信息a,b,c+”不能构成三角形”,如果可以构成则显示三角形三个边长,在主方法中得到命令行输入的三个整数,调用此方法,并捕获异常。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
private double x; private double y; private double z; public Test(double a, double b, double c) {
public static void main(String[] args) { System.out.println("请输入五个整数:"); try { int a = Integer.parseInt(args[0]); int b = Integer.parseInt(args[1]); int c = Integer.parseInt(args[2]); int d = Integer.parseInt(args[3]); int e = Integer.parseInt(args[4]);
super("不能构成三角形!"); } } public class Test4 { public static void main(String[] args) {
Scanner s = new Scanner(System.in); System.out.println("请输入三个边"); try {
} } } 3、写一个方法 void san是否能构成一个三角形,如果不能 则抛出异常 IllegalArgumentException,显示异常信息 a,b,c+”不能构成三角形”,如果可以构 成则显示三角形三个边长,在主方法中得到命令行输入的三个整数,调用此方法,并捕获异 常。 package November; import java.util.Scanner; public class Test3 {
} catch (NumberFormatException n) {
System.out.println("请输入整数"); } catch (ArrayIndexOutOfBoundsException e) {
System.out.println("请输入至少5个整数"); }
catch (Exception e) { System.out.println(e.getMessage());
void sanjiao() { int a;
int b; int c;
System.out.println("请输入三条边长"); Scanner reader=new Scanner(System.in); a=reader.nextInt(); b=reader.nextInt(); c=reader.nextInt();
} public static void main(String[] args){ Test3 t=new Test3(); try{
t.sanjiao();
}catch(NumberFormatException nfe){ System.out.println("请输入正整数");
}catch(IllegalArgumentException iae){ System.out.println("不能构成三角形!");
} }
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);
}catch(Exception e){ System.out.println("-----程序出错-----");
} }
} 4、自定义类 Sanj,其中有成员 x,y,z,作为三边长,构造方法 Sanj(a,b,c)分别给 x,y,z 赋值,方法 求面积 getArea 和显示三角形信息(三个边长)showInfo,这 2 个方法中当三条边不能构成一个 三角形时要抛出自定义异常 NotSanjiaoException,否则显示正确信息。在另外一个类中的主 方法中构造一个 Sanj 对象(三边为命令行输入的三个整数),显示三角形信息和面积,要求捕 获异常。
double x = s.nextDouble(); double y = s.nextDouble(); double z = s.nextDouble(); if(!(x+y>z && x+z>y && y+z>x)) {
throw new NotSanjiaoException(); } Test sj = new Test(x,y,z); System.out.println(sj.getArea()); sj.showInfo(); } catch (NotSanjiaoException e) { System.out.println(e.getMessage()); } catch(InputMismatchException e ) { System.out.println("非法字符!"); }
} }
2、从命令行得到 5 个整数,放入一整型数组,然后打印输出,要求:如果输入数据不为整 数,要捕获 Integer.parseInt()产生的异常,显示“请输入整数”,捕获输入参数不足 5 个的异 常(数组越界),显示“请输入至少 5 个整数”。
package November; import java.util.Scanner; public class Test2 {
this.x = a; this.y = b; this.z = c; } //面积 public double getArea() { return (1/4.0)*Math.sqrt(((x+y+z)*(x+y-z)*(x+z-y)*(y+z-x))); } //展示信息 public void showInfo() { System.out.println("边长分别为:"+x+","+y+","+z); } } class NotSanjiaoException extends Exception { public NotSanjiaoException() {
if(a+b>c&&a+c>b&&b+c>a){ System.out.println("三角形的边长分别为"+"a="+a+" "+"b="+b+" "+"c="+" "+c); } else {
System.out.println("不能构成三角形"); } if(a<0||b<0||c<0){ System.out.println("三条边不能为负"); }
System.out.println("平方为 " + aa * aa); }
catch(StringIndexOutOfBoundsException e){ System.out.println("您输入的数值下标越界");
} catch(NumberFormatException nfe){ System.out.println("您输入的不是数字"); }