黑马程序员技术交流社区

标题: 关于异常处理问题 [打印本页]

作者: 苏伯亚    时间: 2014-4-12 10:41
标题: 关于异常处理问题
复习到异常处理。看代码又有点问题不明白。先上代码:

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");

        }
}
我想问的是当既除了零又角标越界了。这两个异常不能都报吗?为什么每次都报一个呢?是就是只能一个一个的报还是可以让两个同时报异常,如果可以同时报,那么该怎么写代码呢?
作者: 刘晶    时间: 2014-4-12 10:54
抛出异常这段程序就不能运行了,只能处理完之后在执行下面的语句
作者: 周俊波    时间: 2014-4-12 11:24
不是两个一起报,因为程序是按照代码的顺序来的,一旦发现异常,被抓取的异常以后就会跳转至catch块里,执行完catch里的代码  程序就会停止
作者: Sniper_qiu    时间: 2014-4-12 11:59
首先要明白程序的执行过程,再明白抛出异常,到执行异常的过程,catch只能执行对应的异常,当异常没执行,或者没对应的时候,就不去执行了,继续执行下面的程序。不会干扰程序的正常流程。异常是查错的一个好的方法。
作者: 苏伯亚    时间: 2014-4-13 09:23
Sniper_qiu 发表于 2014-4-12 11:59
首先要明白程序的执行过程,再明白抛出异常,到执行异常的过程,catch只能执行对应的异常,当异常没执行, ...

嗯 懂了 谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2