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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 苏伯亚 中级黑马   /  2014-4-12 10:41  /  1122 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

复习到异常处理。看代码又有点问题不明白。先上代码:

class Demo
{
        int div(int a,int b)throws ArithmeticException,ArrayIndexOutOfBoundsException//在功能上通过throws的关键字声明了该功能有可能会出现问题。
        {

                int[] arr = new int[a];

                System.out.println(arr[4]);

                return a/b;
        }
}


class  ExceptionDemo2
{
        public static void main(String[] args) //throws Exception
        {
                Demo d = new Demo();
                try
                {
                        int x = d.div(3,0);
                        System.out.println("x="+x);
                }
               
                catch (ArithmeticException e)
                {
                        System.out.println(e.toString());
                        System.out.println("被零除了!!");

                }
                catch (ArrayIndexOutOfBoundsException e)
                {
                        System.out.println(e.toString());
                        System.out.println("角标越界啦!!");
                }
               
               
               

                System.out.println("over");

        }
}
我想问的是当既除了零又角标越界了。这两个异常不能都报吗?为什么每次都报一个呢?是就是只能一个一个的报还是可以让两个同时报异常,如果可以同时报,那么该怎么写代码呢?

评分

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

查看全部评分

4 个回复

倒序浏览
抛出异常这段程序就不能运行了,只能处理完之后在执行下面的语句
回复 使用道具 举报
不是两个一起报,因为程序是按照代码的顺序来的,一旦发现异常,被抓取的异常以后就会跳转至catch块里,执行完catch里的代码  程序就会停止
回复 使用道具 举报
首先要明白程序的执行过程,再明白抛出异常,到执行异常的过程,catch只能执行对应的异常,当异常没执行,或者没对应的时候,就不去执行了,继续执行下面的程序。不会干扰程序的正常流程。异常是查错的一个好的方法。

评分

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

查看全部评分

回复 使用道具 举报
Sniper_qiu 发表于 2014-4-12 11:59
首先要明白程序的执行过程,再明白抛出异常,到执行异常的过程,catch只能执行对应的异常,当异常没执行, ...

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