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语句块中捕获异常。
- 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("您输入的不是数字"); }