Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为除以0引发异常?_Java_Exception_Constructor_Try Catch_Private Methods - Fatal编程技术网

Java 如何为除以0引发异常?

Java 如何为除以0引发异常?,java,exception,constructor,try-catch,private-methods,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; } 我正在将结果输出到我的测试文件或包含main方法的驱动程序类。要引发

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

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

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

要引发异常,需要执行以下操作:

if (run == 0) {
    throw new IllegalArgumentException("Divide by zero error");
}
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
方法中取消捕获,因此将崩溃

要引发异常,您需要执行以下操作:

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
方法中取消捕获,因此将崩溃

按如下方式修改您的函数:

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
的自定义异常类。有关执行此操作的详细信息留给读者作为练习。(提示:谷歌是一个很棒的工具。)

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

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
的自定义异常类。有关执行此操作的详细信息留给读者作为练习。(提示:谷歌是一个很棒的工具。)

试试这个:

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());
        }
}
试试这个:

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());
        }
}
你能行

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
,如果您仅与消息相关。

您可以这样做

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
如果只与消息相关。

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

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

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

请注意,这是一个RuntimeException,您没有义务处理它。如果您想创建一些强制开发人员处理的东西,您可以创建自己的异常,但我认为不是这样。

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

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

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

请注意,这是一个RuntimeException,您没有义务处理它。如果你想创建一些迫使开发人员处理的东西,你可以创建你自己的异常,但我认为不是这样。

If(分母==0)//告诉用户他不能除以零
,但是如果你不关心抛出什么样的异常,那么有一个90度的斜率,您不必做任何事情:将已经抛出一个
算术异常
如果(分母==0)//告诉用户他不能除以零
,但是如果您不关心抛出的异常类型,则会有一个90度的斜率,您无需执行任何操作:将已引发
算术异常
。字符串中的拼写…^字符串中的XD拼写…^它仅对整数有效
1.0/0
不会这样做。这仅适用于整数<代码>1.0/0不会这样做。