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"); }
我是 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"); }