首页 新闻 会员 周边

java构造函数

0
悬赏园豆:10 [已解决问题] 解决于 2013-11-30 12:28

在java构造函数中抛异常,java对象会被创建吗?

比如我要检查构造函数参数不能小于0,如果小于0就抛异常;那么这个对象还会被创建吗?

菩提下的木树的主页 菩提下的木树 | 初学一级 | 园豆:84
提问于:2013-11-05 17:12
< >
分享
最佳答案
0

废话少说直接上代码

class MyClass
{
    public MyClass(int v)
    {
        try {
            if(v<0)
                throw new Exception("v<0!");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
    
    public void SomeMethod()
    {
        System.out.println("SomeMethod");
    }
}

class Program
{
    public static void main(String[] args) {
        MyClass mc = new MyClass(-1);
        mc.SomeMethod();
    }
}

执行结果

v<0!
SomeMethod

所以这个对象是被创建了的

收获园豆:10
飞鸟_Asuka | 菜鸟二级 |园豆:209 | 2013-11-06 23:04
其他回答(6)
0

应该不吧。。。 程序进去后判断不合要求,抛出异常了。。。我觉得就相当于略过这个方法了。

蘑菇大叔 | 园豆:155 (初学一级) | 2013-11-05 19:35
0

你试一下不就知道了,对一般方法如果抛出异常,就在抛出的地方跳出方法。

angelshelter | 园豆:9887 (大侠五级) | 2013-11-05 21:08
0

楼上说的没错,亲测:

 1 package overloadtest;
 2 
 3 class MyClass {
 4     public MyClass(int v) {
 5         try {
 6             if (v < 0)
 7                 throw new Exception("v<0!");
 8         } catch (Exception e) {
 9             System.out.println(e.getMessage());
10         }
11     }
12 
13     void SomeMethod() {
14         System.out.println("SomeMethod");
15     }
16 }
17 
18 public class Program {
19     public static void main(String[] args) {
20         MyClass mc = new MyClass(-1);
21         mc.SomeMethod();
22     }
23 }

Console:

v<0!
SomeMethod

beyondchina | 园豆:680 (小虾三级) | 2013-11-14 15:58
0

你都catch了当然会创建啊。你这届抛异常不处理肯定是要跳出构造方法的吧

艨子 | 园豆:73 (初学一级) | 2013-11-14 17:04
0

异常你都处理了,当然会创建这个对象啊

龙须子 | 园豆:204 (菜鸟二级) | 2013-11-19 10:05
0

直接抛的话是编译不会通过的。

如果你catch了就会通过。自己把异常处理了当然会。通过了当然会创建对象。

剑握在手 | 园豆:259 (菜鸟二级) | 2013-11-30 10:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册