JAVA异常捕捉机制进阶 完成一个计算绝对值表达式 |a-b|的功能。要求当b比a大时人为抛出一个自定义异常,在计算绝对值时通过异常捕捉机制完成此绝对值表达式的计算。

完成一个计算绝对值表达式 |a-b|的功能。要求当b比a大时人为抛出一个自定义异常,在计算绝对值时通过异常捕捉机制完成此绝对值表达式的计算。

  • 思路
    首先,题目的结果是输入相应的a,b,然后输出正确答案。这是一个宗旨,写代码就是要为了一个目的而创造性的去写它。
    其次,我们看,这次与上次不相同的是,我们需要自己去定义一个异常类,并且人为的去设置去抛出它。

    代码

    import java.util.Scanner;
    public class demo9 {
    public static void main(String args[]){
        while(true){
            System.out.println("这是计算绝对值表达式 |a-b|");
            Scanner s=new Scanner(System.in);//输入前进行扫描,等待a,b在键盘上的输入
            System.out.println("请输入a");//输如a,b
            int a=s.nextInt();
            System.out.println("请输入b");
            int b=s.nextInt();
            int g;
            chuliyichang d=new chuliyichang();//定义一个处理异常类的对象
            try{
                int c=d.chuli(a,b);
                System.out.println(" |a-b|="+c);
                System.out.println("此时未出现异常");
            }
            catch(MyException e){
                g=b-a;
                System.out.print(e);//把接收到的异常信息赋值给e并输出"此时b>a"
                System.out.println(" |a-b|="+g);
                System.out.println("此时出现了异常");
            }
        }
    }
    }
    class chuliyichang{//定义一个异常类,出现异常时抛出信息
    public int chuli(int a,int b)throws MyException{//定义一个函数处理异常
        int g;
        if(b>a){
             throw new MyException("此时b>a"+"\n");//需要抛出的异常信息
        } 
        else{
            g=a-b;//正常情况下输出值
        }
        return g;//返回值
    }
    }
    class MyException extends Exception{//自定义了一个异常类,继承自Exception类
    MyException(String msg){//构造函数
        super(msg);//继承于父类用super
    }
    }
  • 结果

这里写代码片

  • 讲解

int g;
chuliyichang d=new chuliyichang();//定义一个处理异常类的对象

创建一个变量g,用来存放稍后运行中 a-b的绝对值。
而第二行则是创建一个chuliyichang 的异常类的对象,格式是这样的。
由于这种不是静态方法static,故在定义时,需要 chuliyichang是对象命名, d是方法名,换句话说就是它的一个别名。这种方式也就是自己定义一个类的一种格式。

class chuliyichang{//定义一个异常类,出现异常时抛出信息
public int chuli(int a,int b)throws MyException{//定义一个函数处理异常
int g;
if(b>a){
throw new MyException(“此时b>a”+”\n”);//需要抛出的异常信息
}
else{
g=a-b;//正常情况下输出值
}
return g;//返回值
}
}

这一段代码是我们在自定义异常类。
先定义一个变量g;
如果b>a, 也就是a-b 要为负数了 ,这是抛出异常,执行catch模块的程序
如果a>b,正常继续执行后输出即可。

class MyException extends Exception{//自定义了一个异常类,继承自Exception类
MyException(String msg){//构造函数
super(msg);//继承于父类用super
}

这一定是自己定义异常类时,规定的写法。(通俗的来说)
父类的集合就必须要继承,才能使用。

猜你喜欢

转载自blog.csdn.net/quyuquan2014/article/details/82288866