实验10 java异常(答案)
- 格式:doc
- 大小:130.50 KB
- 文档页数:8
实验六Java异常处理【实验目的】1)掌握Java异常的概念及工作机制2)掌握异常的分类3)掌握抛出异常语句的使用(throw)4)掌握抛出捕获处理异常语句的使用(try…catch…finally)5)掌握上抛异常语句的使用(throws)6)掌握创建自定义异常【实验环境】JDK1.6+Eclpise3.2【实验准备】1)复习课件中理论知识2)练习课堂所讲的例子【实验内容】1、编写一个应用程序,要求从键盘输入一个double型的圆的半径,计算并输出其面积。
测试当输入的数据不是double型数据(如字符串“abc”)会产生什么结果,怎样处理。
package SIX;import java.io.IOException;import java.io.InputStreamReader;import java.io.BufferedReader;public class CIRCLE {public static void main(String[] args) throws IOException { System.out.print("请输入半径: ");BufferedReader br = new BufferedReader(new InputStreamReader(System.in));try{System.out.println("圆的面积为:"+computerArea(Double.parseDouble(br.readLine())));}catch(NumberFormatException e){System.out.println("您输入的不是数值,请重新输入");}}public static double computerArea(double r){r eturn Math.PI*r*r;}}2、计算两个正数之和,当任意一个数超出范围时,抛出自己定义的异常(NumberRangeException)。
实验十一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 编程中关于异常处理的 10 个最佳实践在Java编程中,异常处理是一项重要的技术,可以帮助我们提高程序的稳定性和可靠性。
下面列出了10个Java编程中的异常处理最佳实践,以帮助开发者在处理异常时写出更健壮的代码。
1.使用具体的异常类型在捕获异常时,应该尽量使用具体的异常类型而不是通用的Exception类。
这样可以提供更多相关的上下文信息,并且能够针对特定的异常类型采取特定的处理措施。
```javatry {//一些可能抛出特定异常的代码} catch (IOException e) {//处理IOException} catch (SQLException e) {//处理SQLException} catch (Exception e) {//处理其他异常}```2.避免捕获所有异常捕获所有异常可能会导致难以调试的问题,并掩盖真正的问题。
应该尽量只捕获我们能够处理的异常,并将其他异常向上层抛出。
```javatry {//一些可能抛出异常的代码} catch (SpecificException e) {//处理特定异常// ...} finally {//执行清理操作}```3.及早捕获异常尽可能在代码中的早期捕获异常,以便及时处理和回滚。
如果异常延迟到了较迟的阶段再捕获,可能会增加处理异常的复杂性。
4.不要忽略异常在捕获异常时,不要简单地什么也不做,或者只打印一条错误信息。
应该根据具体情况采取适当的处理措施,例如回滚操作,记录日志或重新抛出异常。
```javatry {//一些可能抛出异常的代码} catch (SpecificException e) {//处理特定异常// ...//例如回滚数据库操作} catch (Exception e) {//处理其他异常// ...//例如记录日志logger.error("An error occurred", e);}```5.使用finally块进行清理操作在异常处理中,finally块可以确保资源的正确释放,不管是否发生异常都会执行其中的代码。
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块中编写必要的代码,例如资源的释放。
一. 实验目的及实验环境实验目的:1.理解JA V A对异常的处理2.掌握自定义异常的定义方式实验环境:eclipse 4.4二. 实验内容1.假设Sum类中有一个addContinue(int n)方法,当n>0时,方法翻译1+2+…+n 的和;当n<0时,方法抛出一个受检查的ArgumentException异常。
ArgumentException类应该提供一个能够接受并保存n值得构造方法,以及一个能返回n值得实例方法,现定义Sum类以及ArgumentException类,并编程测试它们。
三.方案设计1.定义三个类Sum,ArgumentException,Test类2.分别在类中实现加法,异常抛出和测试四.测试数据及运行结果1.正常测试数据(3组)及运行结果;2.非正常测试数据(2组)及运行结果。
五.总结1.实验过程中遇到的问题及解决办法;①中没有明确表示需要进行异常抛出很有可能就会忘记这个题目存在的问题。
所以平常程序设计时,应该多考虑不同的情况,防止程序出现不可逆的漏洞。
②如果发生可识别的运行错误,系统应产生一个相应的异常类对象,并进一步寻找异常处理代码来处理它,确保程序能从故障中恢复,之程序能够运行下去,直到结束。
2.对设计及调试过程的心得体会。
中断,影响程序正常运行的事件称为异常。
异常处理是使程序从故障中恢复,他包括提示异常信息、不产生无效结果和释放资源三方面内容。
其中,显示异常信息和不产生无效结果可通过try和catch块来实现,释放资源可通过finally块实现。
附代码public class Add {public int addContinue(int i) throws ArgumentException{int sum=0;if( i<0){throw new ArgumentException(i);}for(int n=0;n<=i;n++){sum=sum+n;}return sum;}}public class ArgumentException extends Exception {private int n;public ArgumentException(int n) {this.n = n;}public int getN(){return n;}}public class test {public static void main(String[] args){Add s = new Add();try {System.out.println(s.addContinue(-1));} catch (ArgumentException e) {System.out.println(e.getN());}}}。
Java异常集合测试题(试卷含答案) Java异常集合测试题(试卷含答案)一、单项选择题1. 下列哪个关键字用于捕获异常?A. catchB. tryC. throwD. finally答案: A2. 异常处理的基本结构是什么?A. try-catchB. try-throwC. catch-throwD. try-finally答案: A3. 在Java中,异常类是由哪个类继承而来?A. ExceptionB. RuntimeExceptionC. ThrowableD. Error答案: C4. 下列代码片段中,哪行可能抛出异常?A. int a = 10;B. String s = "Hello";C. int b = Integer.parseInt("abc");D. System.out.println("Java");答案: C5. 异常分为两种类型,分别是“受检异常”和“非受检异常”,又称为什么类型异常?A. 编译时异常和运行时异常B. 逻辑异常和物理异常C. 一般异常和严重异常D. 程序异常和系统异常答案: A二、填空题1. Java异常处理的关键字为________。
答案: try2. 异常处理的机制主要通过_________块来实现。
答案: try-catch3. 能够捕获多种类型异常的关键字为________。
答案: catch4. 使用_________关键字定义一个方法可能会抛出异常。
答案: throws5. 使用________关键字定义一个方法必须捕获异常。
答案: throw三、编程题请编写一个Java程序,实现以下功能:1. 定义一个方法divide(int a, int b),该方法用于计算a除以b的结果并返回。
2. 如果b为0,则抛出一个自定义异常"DivideByZeroException",提示"除数不能为0"。
java异常处理实验结论-回复Java异常处理实验结论异常是Java程序中经常遇到的一种特殊情况,它打破了程序正常的流程,可能导致程序的异常终止。
为了保证程序能够正常运行并且及时处理异常,Java提供了异常处理机制。
在Java中,异常通常分为两种类型:编译时异常和运行时异常。
编译时异常必须在代码中显式处理,否则无法通过编译;而运行时异常可以选择性地处理或者不处理,程序仍然可以编译和运行。
在异常处理的过程中,我们通常需要使用到try-catch语句块。
try块用来包含可能会抛出异常的代码,而catch块用来捕获并处理这些异常。
在catch块中,我们可以根据异常的类型来执行相应的操作,比如输出异常信息或者进行一些特定的处理。
此外,还可以使用多个catch块来捕获不同类型的异常。
如果try块中的代码正常执行完毕,那么catch块不会执行;而如果try块中的代码抛出了异常,那么catch块会根据异常的类型来进行处理。
除了try-catch语句块,Java还提供了finally语句块。
finally块用来包含一些无论是否发生异常都需要执行的代码,比如关闭资源等。
不管try 块中的代码是否抛出了异常,finally块中的代码都会被执行。
通过实验,我们可以得出以下结论:1. 异常处理机制能够有效地保证程序的稳定性和可靠性。
通过捕获和处理异常,我们可以避免程序因为异常而异常终止,提高程序的容错能力。
2. 使用try-catch语句块可以捕获和处理异常,从而避免异常对程序的影响。
通过多个catch块,我们可以针对不同类型的异常进行不同的处理操作,提高程序的可读性和可维护性。
3. finally语句块的使用可以保证一些必要的资源的释放。
无论是否发生异常,finally块中的代码都会被执行,从而避免资源泄露和内存泄露等问题。
4. 在处理异常时,我们需要根据具体的业务逻辑和需求来选择合适的处理方式。
有时候,我们可能需要将异常抛出给上层调用者,由上层调用者来处理异常;而有时候,我们可能需要直接在当前方法中进行异常处理。
实验六Java异常处理【实验目的】1)掌握Java异常的概念及工作机制2)掌握异常的分类3)掌握抛出异常语句的使用(throw)4)掌握抛出捕获处理异常语句的使用(try…catch…finally)5)掌握上抛异常语句的使用(throws)6)掌握创建自定义异常【实验环境】JDK1.6+Eclpise3.2【实验准备】1)复习课件中理论知识2)练习课堂所讲的例子【实验内容】1、编写一个应用程序,要求从键盘输入一个double型的圆的半径,计算并输出其面积。
测试当输入的数据不是double型数据(如字符串“abc”)会产生什么结果,怎样处理。
package SIX;import java.io.IOException;import java.io.InputStreamReader;import java.io.BufferedReader;public class CIRCLE {public static void main(String[] args) throws IOException { System.out.print("请输入半径: ");BufferedReader br = new BufferedReader(new InputStreamReader(System.in));try{System.out.println("圆的面积为:"+computerArea(Double.parseDouble(br.readLine())));}catch(NumberFormatException e){System.out.println("您输入的不是数值,请重新输入");}}public static double computerArea(double r){r eturn Math.PI*r*r;}}2、计算两个正数之和,当任意一个数超出范围时,抛出自己定义的异常(NumberRangeException)。
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class shu {public static void main(String[] args) throws IOException{System.out.println("请输入两个正整数(回车分隔):");BufferedReader br=new BufferedReader(newInputStreamReader(System.in));int a=Integer.parseInt(br.readLine());int b=Integer.parseInt(br.readLine());try{System.out.println("计算结果(求和)为:" +compute(a, b));} catch (NumberRangeException e){e.printStackTrace();}}public static int compute(int a, int b) throws NumberRangeException {if( (a<0 || b<0)){throw new NumberRangeException("数字不在指定范围");}return (a+b);}}class NumberRangeException extends Exception {public NumberRangeException(String msg){super(msg);}}3、编写一个类实现银行帐户的概念,包括的属性有“帐号”、“储户姓名”、“地址”、“存款余额”、“最小余额”、“利率”、“存款日期”,包括的方法有“存款”、“取款”、“查询”、“计算利息”、“累加利息”等。
并创建“取款数目超过余额”这个异常,并在取款方法中抛出并处理这个异常。
public class bank{int ID;String name;String address;double balance;double min_balance;double rate;double interest;public int getID() {//获取账户return ID;}public void setID(int iD) {//设置账户ID = iD;public String getName() {//获取储户名return name;}public void setName(String name) {//设置储户名 = name;}public String getAddress() {//获取储户地址return address;}public void setAddress(String address) {//设置储户地址this.address = address;}public double getBalance() {//获取余额return balance;}public void setBalance(double balance) {//设置余额this.balance = balance;}public double getMin_balance() {//获取最小余额return min_balance;}public void setMin_balance(double minBalance) {//设置最小余额min_balance = minBalance;}public double getRate() {//获取利率return rate;}public void setRate(double rate) {//设置利率this.rate = rate;}public void savingMoney(double money){//存款this.balance=this.balance+money;public void drawMoney(double money) throws MyException{//取款,发现异常时抛出异常并处理if(money>this.balance){throw (new MyException());}elsethis.balance=this.balance-money;}public double Interest(double interest){//计算利息interest=getRate()*getBalance();this.interest=interest;return interest;}public double addInterest(double money){//累加利息money=this.balance+this.interest;return money;}public void check(){int id;String Name;String Add;double Balance;id=getID();Name=getName();Add=getAddress();Balance=getBalance();System.out.println("账号:"+id);System.out.println("姓名:"+Name);System.out.println("地址:"+Add);System.out.println("账户余额:"+Balance+"元");}}class MyException extends Exception{//自定义异常类String message;public MyException(){message="取款数目超过余额,请重新输入取款金额!";//System.out.println("请重新输入取款金额!");//Bank bank=new Bank();//bank.drawMoney(100000.0);}public String toString(){return message;}}Bank_check.java 文件import java.util.*;public class Bank_check{public static void main(String[] args){Bank b=new Bank();b.setID(123456);b.setName("laidazhang");b.setAddress("闽南科技学院");b.setBalance(100.0);b.check();System.out.println("-----------------存款操作:-------------------="); System.out.println("输入存款金额:");double x,y;Scanner reader= new Scanner(System.in);x=reader.nextDouble();System.out.println("存款后:");b.savingMoney(x);b.check();System.out.println("-----------------取款操作:-------------------="); System.out.println("输入取款金额:");Scanner reader1= new Scanner(System.in);y=reader1.nextDouble();System.out.println("取款后:");try{b.drawMoney(y);}catch(MyException e)//捕捉异常{System.out.println(e.toString());Scanner reader2= new Scanner(System.in);z=reader2.nextDouble();try{b.drawMoney(z);}catch(MyException e1){System.out.println(e.toString());}}finally{b.check();b.setRate(0.05);double interest=0;System.out.println("利息是:"+b.Interest(interest)+"元");double money=0;System.out.println("本金加利息是:"+b.addInterest(money)+"元");}}}【实验感想】。