package programList;public class TestCircleWithException{
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());
}
}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(newRadius >= 0)
radius = newRadius;
else
throw new IllegalArgumentException("Radius cannot be negative");
}
public static int getNumberOfObjects(){
return numberOfObjects;
}
public double findArea(){
return radius * radius *Math.PI;
}
}想问下numberOfObjects为啥是1;Java
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());
}
}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(newRadius >= 0)
radius = newRadius;
else
throw new IllegalArgumentException("Radius cannot be negative");
}
public static int getNumberOfObjects(){
return numberOfObjects;
}
public double findArea(){
return radius * radius *Math.PI;
}
}想问下numberOfObjects为啥是1;Java
是调用了构造方法,只是没执行完呀,第一行代码就异常了,结果直接出了try了,构造方法中和try中剩余的代码都没被运行到呀
是调用了构造方法,只是没执行完呀,第一行代码就异常了,结果直接出了try了,构造方法中和try中剩余的代码都没被运行到呀
你是说在执行setRadius(newRadius);这句的时候就有异常抛出,然后numberOfObjects++;这句就没有机会执行了,是这意思么?意思就是有了异常之后就直接跳出try块,try块中的其他代码都不执行了。
很明显的,你换一下代码顺序就知道了
numberOfObjects++;
System.out.println(numberOfObjects);
setRadius(newRadius);
很明显的,你换一下代码顺序就知道了
numberOfObjects++;
System.out.println(numberOfObjects);
setRadius(newRadius);
其实明白了就感觉挺清晰的,那些点都知道,但是有时候就有些懵,谢谢!