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