java - 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());
}
但我得到的不是错误,而是这个结果
“创建的对象数: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"); }
推荐阅读
- r - 如何创建相关性 = 0.25 的数值向量?
- java - 使用 android 平板电脑和 HC-05 无线电发射器从蓝牙输入流中提取数据的问题
- flutter - 未处理的异常:类型'ImmutableMap
' 不是类型 'List 的子类型 ' 在类型转换中 - python - sklearn 交叉验证 R^2 分数与使用训练模型对训练和验证数据进行的手动检查不匹配
- python - 在主机网络模式下运行 docker 容器时,无法从主机访问 docker 内部的端口
- memory-management - fork 写时复制的实际操作示例
- tensorflow - Tensorflow:如何理解 tflite 模型中的锚点?
- javascript - Javascript对象构造函数参数
- sql - 使用 T-SQL 处理不同模型的每日不同销售额
- javascript - 每次在 socket.io 上都越来越多地重复该过程