Java异常捕捉机制
1、简介
异常指的是程序运行时出现的非正常情况,Java中的异常捕捉最经常使用到的是try和catch两个代码块。本博客讲解的程序是工程训练基本任务1.4中的问题,该任务我是在4月份初学Java时完成的,故定会有许多不足,若有不足之处,恳请大家指出。
2、基本任务和代码
(1)任务1
1)任务内容
完成c=a/b 的计算并输出c的结果,其中用户可以通过键盘输入a和b的数值(),要求当 b 为0时c的计算结果正确。
2)任务代码
首先需要明确的是除法运算中除数不能为0,即该计算中的b不能为0,若b=0则判断为异常;要求用户可以自行输入a和b的值则需要使用到之前的博客《使用Java实现一元二次方程求根计算器》中讲到的“应声虫”的方法;
由于浮点型变量float和double两种类型的变量在输入b=0后不会抛出异常,所以只能定义整数型变量,在定义了两个整数变量a和b后,该程序的a和b只能输入整数具体代码如下:
import java.util.Scanner;//导入java.util包下的Scanner类
public class Test1{
//类名
public static void main(String[] args) {
//程序主入口函数,带命令行参数
while(true){
//定义死循环
System.out.print("求c=a/b的值"+"\n");//输出标题
Scanner in=new Scanner(System.in);//创建scanner,控制台会一直等待输入,直到敲回车结束
System.out.print("请输入a的值:");//输出
int a=in.nextInt();//用户可自行定义a的值
System.out.print("请输入b的值:");//输出
int b=in.nextInt();//用户可自行定义b的值
try{
//try代码块,当发生异常时会转到catch代码块中
int c=(a/b);//定义c等于a除以b
System.out.print("c="+c);//无异常时输出c的值
System.out.println(" ");//格式调整
}
catch(ArithmeticException e){
//当try代码块有异常时转到catch代码块
System.out.print("输入错误,除数不能为0");//当用户输入b=0时输出异常信息
System.out.println(" ");//格式调整
}
}
}
}
3)运行结果
LICEcap截取的动图如下:
(2)任务2
1)任务内容
完成一个计算绝对值表达式 |a-b|的功能要求当b比a大时人为抛出一个自定义异常。
2)任务代码
程序中几乎每一句代码都有注释,故我直接贴代码了:
import java.util.Scanner;//导入java.util包下的Scanner类
public class