java -- 第8章 异常处理

网友投稿 702 2022-05-28

实验目的:

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("输入有误");

}

}

}

运行结果截图:

实验小结

异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的错误条件。当条件生成时,错误将引发异常。

我们可以通过try和cath关键字来捕获异常,其中catch可以多次使用,进行多重捕获异常,如下图所示:

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

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

java -- 第8章 异常处理

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

Summary:

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

Java

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:编辑器之神的简明通关教程
下一篇:Linux入门篇 —— Linux软件安装(YUM & RPM & 源码)
相关文章