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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄杨 中级黑马   /  2013-3-21 22:03  /  1949 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Test{
public static void main(String[] args) throws Exception{
for(int i=0; i<10; ++i){
try{
if(i%3 == 0) throw new Exception("E0");
System.out.println(i);
} catch (Exception inner){
i *= 2;
if(i%3 == 0) throw new Exception("E1");
}finally{
++i;
}
}
}
}

怎样才能正常运行不出错?

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-22 12:44

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

5 个回复

倒序浏览
本帖最后由 吴上波 于 2013-3-21 22:18 编辑

public class Test {
        public static void main(String[] args) throws Exception {
                for (int i = 0; i < 10; i++) {
                        try {
                                if (i % 3 == 0)
                                        throw new Exception("E0");
                                System.out.println(i);
                        } catch (Exception inner) {
                                i *= 2;
                                if (i % 3 == 0)
                                        try {
                                                throw new Exception("E1");//这个异常需要catch,否则报错,退出循环!
                                        } catch (Exception e) {

                                                 //此处可自定义处理代码
                                        }

                        } finally {
                        }
                }
        }
}

输出结果如下:
1
2
7
8

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
class Demo2{
public static void main(String[] args) {
        for(int i=0; i<10; ++i){
                try{
                if(i%3 == 0) throw new Exception("E0");
                System.out.println(i);
                } catch (Exception inner){
                        try
                        {
                        i *= 2;
                        if(i%3 == 0) throw new Exception("E1");
                        }
                        catch (Exception e)
                        {
                                continue;
                        }
                        }finally{
                           ++i;
                        }
                }
         }
}首先你写代码还是缩进一下,看晕了,把里面嵌套的异常捕捉了就能运行了,这是我改了以后的结果,运行成功了,你开始把那个异常抛给虚拟机,所以虚拟机就报告错误了,你自己捕捉了就可以了

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
把代码改成这样,就OK了
public class Test {
        public static void main(String[] args) throws Exception {
                for (int i = 0; i < 10; i++) {
                        try {
                                if (i % 3 == 0)
                                        throw new Exception("有异常出现");
                                       System.out.println(i);
                        } catch (Exception inner) {
                                i *= 2;
                                if (i % 3 == 0)
                                        try {
                                                throw new Exception("E1");
                                        } catch (Exception e) {
                                                 throw new Exception(e);                                        }
                        } finally {
                        }
                }
        }
}
回复 使用道具 举报
原来是这样,谢谢大家了!但是我不会修改为已解决,谁懂啊?
回复 使用道具 举报
黄杨 发表于 2013-3-22 23:08
原来是这样,谢谢大家了!但是我不会修改为已解决,谁懂啊?

http://bbs.itheima.com/thread-37643-1-1.html
看这里
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马