//练习一
package zhihua1;
public class ReturnExceptionDemo {
public static void methodA() throws Exception {
try {
System.out.println("进入方法A");
throw new Exception("制造异常");//手动抛出异常
}finally {
System.out.println("用A方法的finally");
}
}
public static int methodB(){
try {
System.out.println("进入方法B");
return 1;
}finally {
System.out.println("用B方法的finally");
return 2;
}
}
public static void main(String[] args) {
try {
methodA();
} catch (Exception e) {
System.out.println(e.getMessage());
}
int i = methodB();
System.out.println(i);
}
}
//练习二
package zhihua1;
/*
* 编写应用程序,接收命令行的两个参数,要求不能输入负数,计算两数相除。
* 对数据类型不一致(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("a").
*
*/
public class EcmDef {
public static void main(String[] args) {
try {
int i = Integer.parseInt(args[0]);//被除数
int j = Integer.parseInt(args[1]);//除数
ecm(i,j);
} catch (NumberFormatException e) {
System.out.println("输入的数据类型不一致");
} catch(ArrayIndexOutOfBoundsException e) {
System.out.println("缺少命令行参数");
}catch(ArithmeticException e) {
System.out.println("分母为零了");
}catch (EcDef e) {
System.out.println(e.getMessage());
}
}
public static void ecm(int i,int j) throws EcDef {
if(i < 0 || j < 0) {
throw new EcDef("你输入的数值存在负数!");//手动抛出异常
}
System.out.println(i / j);
}
}
//自定义异常类
class EcDef extends Exception{
static final long serialVersionUID = -338751699329948L;
public EcDef() {
super();
}
public EcDef(String msg) {
super(msg);
}
}