问题
编写应用程序EcmDef.java,接收命令行的两个参数,要求不能输入负数,计算两个数相除。
对数据类型不一致(NumberFormatException)、缺少命令行参数(ArrayIndexOutOfBoundsException)、除0异常(ArithmeticException)及输入负数(NegativeEception,自定义异常)进行异常处理。
解决
自定义异常:
public class NegativeEception extends Exception{
static final long serialVersionUID = -70348971907766939L;
public NegativeEception() {
}
public NegativeEception(String msg) {
super(msg);
}
}
EcmDef.java:
public class EcmDef {
public static void main(String[] args) {
int ref = 0;
try {
int i = Integer.parseInt(args[0]);//把输入的字符串类型的转换成int类型
int j = Integer.parseInt(args[1]);
ref = ecm(i, j);
}catch(NumberFormatException e) {
System.out.println("数据类型不一致");
}catch(ArrayIndexOutOfBoundsException e) {
System.out.println("缺少命令行参数");
}catch(ArithmeticException e) {
System.out.println("除0异常");
}catch(NegativeEception e) {
System.out.println(e.getMessage());
}finally {
System.out.println(ref);
}
}
//要再定义一个方法确定啥时候会出现自定义异常
public static int ecm(int i,int j) throws NegativeEception{
if(i<0||j<0) {
throw new NegativeEception("分子或分母是负数");
}
return i/j;
}
}
运行
利用main方法的String[] args和控制台进行交流