黑马程序员技术交流社区

标题: 关于抛出异常的问题 [打印本页]

作者: 胡威    时间: 2011-11-25 20:04
标题: 关于抛出异常的问题
class Demo
{
        int div(int x,int y)throws Exception
        {
                return x/y;
        }
}
class  ExceptionDemo1
{
        public static void main(String[] args)
        {       
                Demo d=new Demo();
                int x=d.div(4,1);
                System.out.println("x="+x);
                System.out.println("over");
        }
}
编译时说需要对抛出的Exception捕获或抛出,如果会那为什么下面这个却Catch不到异常啊
class Demo
{
        int div(int x,int y)throws Exception
        {
                return x/y;
        }
}
class  ExceptionDemo1
{
        public static void main(String[] args)
        {        Demo d=new Demo();

                try
                {
                        int x=d.div(4,1);
                                               System.out.println("x="+x);
  
                }
                catch (Exception e)
                {
                        System.out.println(e.toString());
                }
               
                System.out.println("over");
        }
}

作者: 强子    时间: 2011-11-25 20:31
因为你的div方法抛出了一个异常,所以在调用这个方法的时候必须捕获或者继续向外抛出这个异常
异常并不是什么时候都会发生的,提示需要捕获或抛出只是告诉你有可能会发生异常,你需要去处理
你这个程序之所以抛出异常是因为Y有可能为0  而0 不可以作为除数
然而你在调用的时候传递的y = 1 所以异常未被触发
当你传递div(x, 0)的时候就会捕获异常了
作者: 胡威    时间: 2011-11-25 22:37
java.lang里面定义了一个Class Exception,那个Exception和这里的Exception是一样的吗
作者: 颜小飞    时间: 2011-11-25 23:07
因为在执行d.div(4,1)这个方法时,没有异常发生,所以捕捉不到异常啊。就像你安装了一个报警器,没有事故发生,它不能随便乱叫吧!

作者: 胡威    时间: 2011-11-26 00:04
为什么这里不是throws ArithmeticException,为什么用Exception也可以啊,只看Exception怎么知道抛出的具体是什么异常啊?




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