*编写应用程序EcmDef.java, 接收命令行的两个参数, 要求不能输入负数, 计算 两数相除。 对 数 据 类 型 不 一 致 (NumberFormatException) 、 缺 少 命 令 行 参 数 (ArrayIndexOutOfBoundsException、 除0(ArithmeticException)及输入负数(EcDef 自定义的异常)进行异常处理。 *提示: (1)在主类(EcmDef)中定义异常方法(ecm)完成两数相除功能。 (2)在main()方法中使用异常处理语句进行异常处理。 (3)在程序中, 自定义对应输入负数的异常类(EcDef)。 (4)运行时接受参数 java EcmDef 20 10 //args[0]=“20” args[1]=“10” (5)Interger类的static方法parseInt(String s)将s转换成对应的int值。 如: int a=Interger.parseInt(“314”); //a=314; */
public class EcmDef {
public static void main(String[] args) {
try {
int i= Integer.parseInt(args[0]);
int j= Integer.parseInt(args[1]);
int result= 0;
result = ecm(i,j);
System.out.println(result);
} catch (NumberFormatException e){
System.out.println("数据类型不一致");
}
catch (ArrayIndexOutOfBoundsException e){
System.out.println("缺少命令行参数");
}
catch (ArithmeticException e){
System.out.println("除数为零");
} catch (Ecmp ecmp) {
ecmp.printStackTrace();
}
}
public static int ecm(int i,int j)throws Ecmp{
if(i<0||j<0){
throw new Ecmp("分母或分子为负数了");
}
return j/i;
}
}
/*2
* 如何自定义异常类?
* 1. 继承于现的异常结构:RuntimeException 、Exception
* 2. 提供全局常量:serialVersionUID
* 3. 提供重载的构造器
package com.project.textlastt;
//自定义异常类
public class Ecmp extends Exception{
static final long serialVersionUID = -7034897190745766939L;
public Ecmp(){}
public Ecmp(String masg){
super(masg);
}
}
throw 表示抛出一个异常类的对象,生成异常对象的过程。声明在方法体内。
throws 属于异常处理的一种方式,声明在方法的声明处。
java异常处理的抓抛模型
过程一:"抛":程序在正常执行的过程中,一旦出现异常,就会在异常代码处生成一个对应异常类的对象。
* 并将此对象抛出。
* 一旦抛出对象以后,其后的代码就不再执行。
*
* 关于异常对象的产生:① 系统自动生成的异常对象
* ② 手动的生成一个异常对象,并抛出(throw)
*
过程二:"抓":可以理解为异常的处理方式:① try-catch-finally ② throws
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧