Java异常捕捉机制
任务要求:
一、完成一个 java application应用程序,完成c=a/b 的计算并输出c的结果,可以为a和b在程序中赋初值、或者接收用户通过键盘输入a和b的数值文本后转换为数字等,在程序要求当 b 为0时c的计算结果正确。
二、完成一个 java application应用程序,完成一个计算绝对值表达式 |a-b|的功能。要求当b比a大时人为抛出一个自定义异常,在计算绝对值时通过异常捕捉机制完成此绝对值表达式的计算。
任务一代码:
import java.util.Scanner;//导入扫描器
public class yichangchuli { //类名
public static void main(String[] args){//main函数
int a=0, b=0, c=0; //定义变量a,b,c用于存放数据
while(true){ //循环体,用于多次输入输出
System.out.println("请输入a,b:");//输出文字提示
Scanner s1 = new Scanner(System.in);//创建扫描器对象用于接收键盘输入的数字
a = s1.nextInt(); //将接收到的值赋予a变量
Scanner s2 = new Scanner(System.in);
b = s2.nextInt();
try{ //try catch异常捕捉语句
System.out.println(c=a/b); //这里放置可能存在异常的语句
}
catch(ArithmeticException e){ //异常的类型以及异常对象
System.out.println("除数不能为零,请重新输入:");//对出现异常时经行的处理语句
}
}
}
}
运行结果:
任务二:
这里需要用到自定义异常的处理方式,先介绍一下throws和throw的区别以及用法:
throws
- 用在方法声明后面,然后跟异常类名
- 表示抛出异常,由该方法的调用者来处理
- 表示出现异常的一种可能性,并不一定会出现这些异常
throw
- 用在方法体内,后面跟的是异常对象名
- 表示抛出异常,由方法体内的语句进行处理
- 执行throw一定抛出了某种异常
代码:
自定义异常类:
package customize;//包名
public class MyException extends Exception {//自定义异常类
public MyException() { //构造方法
}
public MyException(String message) { //有参构造方法
super(message); //super传递参数
}
}
异常处理类:
package customize;//包名
public class yichang {//yichang类
public void check(int c) throws MyException{//check方法体
if(c<0) {
throw new MyException("|a-b|="+(-c));//if语句判断是否抛出异常
}else {
System.out.println("|a-b|="+c);//输出语句
}
}
}
main函数:
package customize;//包名
import java.util.Scanner;//导入扫描器
public class customize {//类名
public static void main(String[] args) {//main函数体
Scanner sc = new Scanner(System.in);//新建扫描器对象
System.out.println("请输入a,b的值"); //输出提示文字
int a = sc.nextInt(); //接收键盘输入的数字
int b = sc.nextInt(); //接收键盘输入的数字
int c = a-b; //定义c的计算公式
yichang t = new yichang(); //创建yichang类的对象
try { //异常捕捉
t.check(c); //调用check异常处理方法
} catch (MyException e) { //
System.out.print(e); //输出异常结果
}
}
}
运行结果: