java 上的非法参数异常

Illegal argument exception on java

我是 java 的新手,正在尝试学习异常处理 所以我的代码是这样的

public class CircleWithException {
private double radius;
private static int numberOfObjects = 0;

public CircleWithException (){
    this(1.0);
}

public CircleWithException (double newRadius){
    setRadius(newRadius);
    numberOfObjects++;
}

public double getRadius(){
    return radius;
}

public void setRadius(double newRadius) throws IllegalArgumentException {
    if(radius>=0) radius = newRadius;
    else if(radius<0)
        throw new IllegalArgumentException("Radius cannot be negative");
}

public static int getNumberOfObjects(){
    return numberOfObjects;
}

public double findArea(){
    return radius*radius*Math.PI;
}

主要方法是这样的

public class ApplicationCircle {
public static void main(String[] args){
    try{
        CircleWithException  c1 = new CircleWithException (5);
        CircleWithException  c2 = new CircleWithException (-5);
        CircleWithException  c3 = new CircleWithException (0);
    }

    catch (IllegalArgumentException ex){
        System.out.println(ex);
    }

    System.out.println("Number of objects created: "+CircleWithException .getNumberOfObjects());
}

但我得到的不是错误而是这个结果

"Number of objects created: 3"

谁能帮帮我? 非常感谢

您的代码编写正确,但看起来您在 "setRadius(double newRadius)" 方法中犯了错误。您正在检查半径是否小于 0(或 >=0),但由于从未在 -5 的情况下设置它,因此您不会抛出异常。

我相信你想检查 newRadius 是大于还是小于 0。

所以代码将是(注意半径如何更改为 newRadius,因为这是您在方法中传递的参数):

public void setRadius(double newRadius) throws IllegalArgumentException {
if(newRadius>=0) radius = newRadius;
else if(newRadius<0)
    throw new IllegalArgumentException("Radius cannot be negative"); }