A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 淡夜清风 中级黑马   /  2014-1-12 17:38  /  1218 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Demo2 {

        public static int i=3;
       
        public static void func()
        {
                try
                {
                        if(i<5) //有了if条件,能通过编译运行; 如果把这句话注释掉之后编译不通过,为什么?
                        throw new Exception();
                        System.out.println("A");
                }
                catch(Exception e){
                        System.out.println("B");
                }
        }
       
        public static void main(String[] args){
                try{
                        func();
                }catch(Exception e){
                        System.out.println("C");
                }
                System.out.println("D");
        }
}

public class Demo2 {

        public static int i=3;
       
        public static void func()
        {
                try
                {
                        if(i<5) //有了if条件,能通过编译运行; 如果把这句话注释掉之后编译不通过,为什么?
                        throw new Exception();
                        System.out.println("A");
                }
                catch(Exception e){
                        System.out.println("B");
                }
        }
       
        public static void main(String[] args){
                try{
                        func();
                }catch(Exception e){
                        System.out.println("C");
                }
                System.out.println("D");
        }
}

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 淡定

查看全部评分

9 个回复

倒序浏览
你也不用脑袋想一想,你把if()这个去掉了, 那你还抛什么异常类对象啊!

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 淡定

查看全部评分

回复 使用道具 举报
完美恋爱 发表于 2014-1-12 18:29
你也不用脑袋想一想,你把if()这个去掉了, 那你还抛什么异常类对象啊!

我就直接抛也没事。。
-------------------
public class Demo2 {

        public static int i=3;
       
        public static void func()
        {
                try
                {
                //        if(i<5)
                        throw new Exception();
                //        System.out.println("A");
                }
                catch(Exception e){
                        System.out.println("B");
                }
        }
       
        public static void main(String[] args){
                try{
                        func();
                }catch(Exception e){
                        System.out.println("C");
                }
                System.out.println("D");
        }
}
运行结果:
B
D
回复 使用道具 举报
把if去掉的话,就是一定会抛异常, System.out.println("A")这句话就相当于废话了,执行不到,肯定编译不过

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 淡定

查看全部评分

回复 使用道具 举报
淡夜清风 发表于 2014-1-12 18:35
我就直接抛也没事。。
-------------------
public class Demo2 {

是啊!你要是不写if的话,你也别把输出语句注释啊!那样肯定报错
回复 使用道具 举报
完美恋爱 发表于 2014-1-12 19:06
是啊!你要是不写if的话,你也别把输出语句注释啊!那样肯定报错

为什么呢?谢谢。
回复 使用道具 举报
ixiangfeng 发表于 2014-1-12 18:38
把if去掉的话,就是一定会抛异常, System.out.println("A")这句话就相当于废话了,执行不到,肯定编译不过 ...

有可能。。
回复 使用道具 举报

呃 不是有可能,事实就是这样 当你的程序中有执行不到的语句JVM在编译时就会报错的
回复 使用道具 举报
ixiangfeng 发表于 2014-1-12 19:52
呃 不是有可能,事实就是这样 当你的程序中有执行不到的语句JVM在编译时就会报错的 ...

哦哦 谢谢!
回复 使用道具 举报
//有了if条件,能通过编译运行; 如果把这句话注释掉之后编译不通过,为什么?
if(i<5){
    throw new Exception();
}
   System.out.println("A");

其实这个就是格式问题了,楼上的说得对,if去掉之后, syso的这句代码就废掉了,所以编译会出错

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马