Java 使用ArithmaticException构造函数处理抛出

Java 使用ArithmaticException构造函数处理抛出,java,exception,constructor,throw,Java,Exception,Constructor,Throw,问题:编写一个名为addTwoPositive的方法,该方法接受两个int参数,如果其中一个值不是正数,则抛出一个算术异常,将字符串“Non-positive integers sent!”传递给异常的构造函数。如果两个值都为正值,则返回它们的总和 对于如何通过arithmetricexception构造函数处理此异常,我感到困惑。这是我的密码: package IfnotPos; public class IfNotPositive extends ArithmeticException{

问题:编写一个名为
addTwoPositive
的方法,该方法接受两个int参数,如果其中一个值不是正数,则抛出一个
算术异常
,将字符串“Non-positive integers sent!”传递给异常的构造函数。如果两个值都为正值,则返回它们的总和

对于如何通过
arithmetricexception
构造函数处理此异常,我感到困惑。这是我的密码:

package IfnotPos;

public class IfNotPositive extends ArithmeticException{

    public static void main(String[] args) throws ArithmeticException{

        IfNotPositive pos = new IfNotPositive();
        System.out.println(pos.addTwoPositive(-3,2));

    }

    public int addTwoPositive(int plus, int plus1) throws ArithmeticException{
        if(plus < 0 || plus1 < 0){
            throw new ArithmeticException("Non-positive integers sent!");

        }
        else{
            return plus + plus1;
        }

    }

    public ArithmeticException(String string) {
        return string;

    }

}
包IfnotPos;
公共类IfNotPositive扩展算术异常{
公共静态void main(字符串[]args)引发算术异常{
IfNotPositive=新的IfNotPositive();
系统输出打印LN(位置addTwoPositive(-3,2));
}
public int addTwoPositive(int plus,int plus1)抛出算术异常{
如果(加上<0 | |加上1<0){
抛出新的算术异常(“发送非正整数!”);
}
否则{
返回加+加1;
}
}
公共算术异常(字符串){
返回字符串;
}
}

我得到一个错误“方法的返回类型丢失”,如果我将其更改为字符串或其他任何内容,它显然将不再是构造函数。如果您能帮助处理此异常,我们将不胜感激

首先,您不需要扩展算术异常类。您不是在创建自定义异常,而是在不满足条件的情况下编写一个程序来抛出算术异常(注意,它位于java.lang中)

代码的问题是,您定义的构造函数从来就不存在,而且是不正确的,因此存在编译问题

public ArithmeticException(String string) {
    return string;
}
只要删除此构造函数,您就可以开始了。

构造函数声明与方法声明类似,只是它们使用类的名称,并且没有返回类型

我得到一个错误“方法的返回类型丢失”

出现此错误是因为代码中的
公共算术异常(字符串)

您不能在另一个类中添加任何其他类的构造函数,因此Java将
公共算术异常(String String)
视为函数而不是构造函数

正如你们所知,对于这个方法,你们需要有返回类型的修补


同学们,你们不必扩展。见以下代码:

public class IfNotPositive{

    public static void main(String[] args) throws ArithmeticException{

        IfNotPositive pos = new IfNotPositive();
        System.out.println(pos.addTwoPositive(-3,2));

    }

    public int addTwoPositive(int plus, int plus1) throws ArithmeticException{
        if(plus < 0 || plus1 < 0){
            throw new ArithmeticException("Non-positive integers sent!");

        }
        else{
            return plus + plus1;
        }

    }
}

我不明白为什么要在代码中为算术异常创建构造函数

公共算术异常(字符串){
返回字符串;
}
你不会写这样的构造函数。这是抱怨上述方法的语法异常。这个构造函数是不必要的。删除此选项,您的代码将完美运行。您应该看到下面运行程序时出现异常

线程“main”java.lang.arithmetricException中的异常:非正 整数发送!在 com.code.samples.IfNotPositive.addTwoPositive(IfNotPositive.java:14) 位于com.code.samples.IfNotPositive.main(IfNotPositive.java:8)


谢谢大家。所以现在我不明白他们所说的“将字符串‘非正整数发送!’传递给异常的构造函数”是什么意思。所以现在我不明白他们所说的“将字符串‘非正整数发送!’传递给异常的构造函数”是什么意思。所以现在我不明白他们所说的是什么意思传递字符串“已发送非正整数!”“@userb看到上面的答案了。所以现在我不明白他们所说的“传递字符串”是什么意思了对于异常的构造函数,“它只是告诉要做什么的不同方法——您也可以这样理解它——“抛出一个算术异常,消息‘发送的非正整数!'"
throw new ArithmeticException("Non-positive integers sent!");