如何将除法的异常抛出0?

时间:2012-10-10 23:23:57

标签: java exception constructor try-catch private-methods

如果我的斜率分母为0,如何抛出异常使其输出“计算失败,x1和x2之间没有变化”...以下块是类文件中的方法。

public double getSlope() {
    double rise = p2.getY() - p1.getY();
    double run  = p2.getX() - p1.getX();
    double slope = rise / run;
    return slope;
}

我将结果输出到我的Testing文件或包含main方法的驱动程序类。

6 个答案:

答案 0 :(得分:4)

if (run == 0) {
    throw new IllegalArgumentException("Divide by zero error");
}

答案 1 :(得分:1)

要抛出异常,您需要执行此操作:

public double getSlope() {
    double rise = p2.getY() - p1.getY();
    double run  = p2.getX() - p1.getX();
    if (run == 0) throw new Exception(
                   "Calculation failed, there is no change between x1 and x2");
    double slope = rise / run;
    return slope;
}

请注意方法中的关键字throw,这显然不会从main方法中捕获,因此会崩溃!

答案 2 :(得分:1)

你可以做到

if(run == 0) {
    throw new java.lang.ArithmeticException("Calculation failed, there is no change between x1 and x2");
}
double slope = rise / run; 

此外,如果更有意义,您可以使用java.lang.IllegalStateException

或者java.lang.RuntimeException如果您只有相关信息。

答案 3 :(得分:1)

当除以零时,它会自动抛出一个名为java.lang.ArithmeticException的异常。

如果你真的想抛出自己的异常,把你的信息或类似的东西,你可以如下:

if(run == 0) {
    throw new ArithmeticException("Your message here");
}

请注意,这是一个RuntimeException,您没有义务处理它。如果你想创建一些强迫开发人员处理的东西,你可以创建自己的Exception,但我认为情况并非如此。

答案 4 :(得分:0)

按如下方式修改您的功能:

public double getSlope() throws DivideByZero{
    double rise = p2.getY() - p1.getY();
    double run  = p2.getX() - p1.getX();

    if (run == 0) {
        throw new MyException("Denominator is zero");
    }

    double slope = rise / run;
    return slope;
}

我的回答还要求您创建一个名为MyException的自定义异常类。关于这样做的细节留给读者练习。 (提示:Google是一个很棒的工具。)

答案 5 :(得分:0)

试试这个:

public double getSlope() throws Exception {
    double rise = p2.getY() - p1.getY();
    double run  = p2.getX() - p1.getX();
    if (run == 0) throw new Exception("Calculation failed.");
    double slope = rise / run;
    return slope;
}

public class TestLine {
    public static void main(String[] args) {
        try{
            l1.getSlope();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
}