java — 第8章 异常处理

【摘要】 实验目的:
      1.熟悉异常处理机制。
      2.掌握常见异常的捕获方法。
实验内容:
        1.编程实现除数为0的异常处理。
        2.编程实现输入错误…

实验目的:

1.熟悉异常处理机制。

2.掌握常见异常的捕获方法。

实验内容:

1.编程实现除数为0的异常处理。

2.编程实现输入错误的异常处理。

3.编程实现非法参数的异常处理。

实验步骤:

1.编写一个类ExceptionTest,在main方法中使用try-catch-finally语句结构实现:

1)在try语句块中,编写两个数相除操作,相除的两个操作数要求程序运行时用户输入;

2)在catch语句块中,捕获被0除所产生的异常,并输出异常信息;

3)在finally语句块中,随意输出一条语句,比如:

System.out.println(执行finally语句块。);

提示:捕捉ArithmeticException异常。

源代码:

import java.util.Scanner;

public class ExceptionTest {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

System.out.println(请输入被除数:\n”);

int op1 = input.nextInt();

System.out.println(请输入除数:\n”);

int op2 = input.nextInt();

int result = 0;

try {

result = op1 / op2;

} catch (ArithmeticException e) {

e.printStackTrace();

} finally {

System.out.println(运行完成);

}

System.out.println(result);

}

}

运行结果截图:

2. 编写一个应用程序,要求从键盘输入一个double型的圆的半径,计算并输出其面积。测试当输入的数据不是double型数据(如字符串“abc”)会产生什么结果,怎样处理。

提示:捕捉InputMismatchException异常。

源代码:

import java.util.InputMismatchException;

import java.util.Scanner;

public class Circle {

public static void main(String[] args){

Scanner input = new Scanner(System.in);

System.out.println(请输入圆的半径:);

double r = input.nextDouble();

double s = 0;

try {

s = r*r*3.14;

} catch (InputMismatchException e) {

e.printStackTrace();

} finally {

System.out.println(运行完成);

}

System.out.println(圆的面积为:+s);

}

}

运行结果截图:

3.设计类Person要求从键盘输入身份证号,为类的属性id设置值,当输入的身份证号的长度为18时,赋值给id,当值长度不是18时,抛出IllegalArgumentException异常,然后捕获和处理异常,编写程序实现以上功能。

提示:IllegalArgumentException异常是用户自定义的异常,不能依靠系统自动抛出,必须通过throws语句实现。可参考以下代码:

源代码:

import java.util.InputMismatchException;
import java.util.Scanner;

class person {
private String id;
public String getId(){
return id;
}
public void setId(String id) throws IllegalArgumentException
{
if(id.length() != 18)
{
throw(new IllegalArgumentException());
}
this.id = id;
}
}

public class Sy8_3{
public static void main(String[] args){
person p1 = new person();
Scanner input = new Scanner(System.in);
System.out.println(请输入身份证号码:);
try {
p1.setId(input.next());
System.out.println(你输入的身份证是:”+p1.getId());
}
catch (IllegalArgumentException e) {
System.out.println(输入有误);
}
}
}

运行结果截图:

实验小结

  1. 异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的错误条件。当条件生成时,错误将引发异常。
  2. 我们可以通过try和cath关键字来捕获异常,其中catch可以多次使用,进行多重捕获异常,如下图所示:

  1. 第三步可以使用throws关键字来抛出异常,在方法名称的尾部加上throws关键字和抛出的异常,如下图所示:

  1. 我们可以通过throws关键字来抛出多个异常,在抛出的异常名称后面用逗号分隔开,下面代码就抛出了RemoteException异常和InsufficientFundsException异常,如下图所示:

  1. 异常处理中还有一个finally关键字,无论有没有异常,finally中的代码总是被执行,需要注意的是finally不是必要的,如下图所示

  1.  

Summary

养成良好的编程习惯,不要把错误给吞噬掉(即捕获到异常以后又不做出相应处理的做法,这种做法相当于是把错误隐藏起来了,可实际上错误依然还是存在的), 也不要轻易地往外抛错误,能处理的一定要处理,不能处理的一定要往外抛。往外抛的方法有两种,一种是在知道异常的类型以后,方法声明时使用throws把 异常往外抛,另一种是手动往外抛,使用“throw+异常对象”你相当于是把这个异常对象抛出去了,然后在方法的声明写上要抛的那种异常。

文章来源: beishan.blog.csdn.net,作者:北山啦,版权归原作者所有,如需转载,请联系作者。

原文链接:beishan.blog.csdn.net/article/details/112342204

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享