java_⾃定义受检异常类 OddException,表示两个数相除时,除数为奇数时出现的异常。

package experiment6.exp2;

import java.util.Scanner;

/*⾃定义受检异常类 OddException,表示两个数相除时,
除数为奇数时出现的异常。
该类必须定义两个构造⽅法:
默认构造⽅法和
带字符串参数的构造⽅法。

编写MathDivide类,实现成员⽅法divide(double b,double c),两个数据的除法。

程序接受从控制台输⼊的两个浮点数,
计算这两个数的商。
如果输⼊的除数是奇数,将抛出OddException异常并处理,否则输出这两个数的商。

 */
public class DivideTryCatch {
    public static void main(String[] args) {
        System.out.println("请输入被除数和除数并用逗号隔开,输入两组:");

       /* float a=sc.nextFloat();
        String tmp=sc.next();
        float b=sc.nextFloat();*/
        int cnt=0;
        while(cnt++<2) {
            Scanner sc = new Scanner(System.in);
            String line = sc.nextLine();
            String[] arrayLine = line.split(",");
            double a = Double.parseDouble(arrayLine[0]);
            double b = Double.parseDouble(arrayLine[1]);
            MathDivide mathdivide = new MathDivide();
            //System.out.println(a+"/"+b+"=" +mathdivide.divide(a, b));
            mathdivide.divide(a, b);
        }
    }
}

package experiment6.exp2;
/*⾃定义受检异常类 OddException,表示两个数相除时,
除数为奇数时出现的异常。
该类必须定义两个构造⽅法:
默认构造⽅法和
带字符串参数的构造⽅法。*/
public class OddException extends Exception {
    String str;
    double m,n;
    public OddException(double b,double c){
        //System.out.print(b+"/"+c+"中除数不能为奇数");
        m=b;
        n=c;
    }

    public  OddException(){

    }
    @Override
    public String getMessage() {

        return String.format("%.2f/%.2f=", m,n)+"中除数不能为奇数";
    }
}

package experiment6.exp2;

import java.text.DecimalFormat;

/*编写MathDivide类,实现成员⽅法divide(double b,double c),两个数据的除法。*/
public class MathDivide {
    void divide(double b,double c){
        if(c%2!=0){
            try {
                throw new OddException(b,c);
            } catch (OddException e) {
                e.printStackTrace();
            }
        }
        else
            System.out.println(String.format("%.2f/%.2f=", b,c)+new DecimalFormat("0.00").format(b/c ));

    }

}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,异常被分为种类型:受检异常和非受检异常,又称为编译异常和运行异常受检异常是指在程序编译,编译器会检查这些异常是否被处理。如果一个方法可能会抛出受检异常,那么在方法定义中必须声明这些异常,并且在方法调用必须使用try-catch语句块或者抛出异常来处理这些异常受检异常通常是由外部因素引起的,例如文件不存在、网络连接失败等。受检异常的目的是为了提醒程序员在代码中进行异常处理,以保证程序的稳定性和可靠性。 编译异常是指在程序编译可能会出现异常,例如空指针异常、数组越界异常等。编译器会检查这些异常是否能被正确捕获和处理。如果程序中没有处理这些异常,编译器会报错,程序无法编译通过。编译异常通常是由代码错误引起的,例如调用了一个null对象的方法或者访问了数组的不存在的索引。 非受检异常也称为运行异常,是指在程序运行可能会出现异常,例如除零异常、类型转换异常等。非受检异常在程序运行才会被抛出,程序员不需要在代码中显式地处理这些异常。通常情况下,这些异常是由程序逻辑错误引起的。如果不处理非受检异常,程序会终止并抛出异常信息。 因此,受检异常和编译异常的区别在于:受检异常是在编译期间会被检查的异常,必须在代码中显式处理;而编译异常是在编译期间会被检查的异常,必须在代码中显式处理;非受检异常是在运行期间抛出的异常,不需要在代码中显式处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值