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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡威 黑马帝   /  2011-11-25 20:04  /  2457 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

评分

参与人数 1技术分 +1 黑马币 +1 收起 理由
黑马谢承强 + 1 + 1

查看全部评分

4 个回复

倒序浏览
强子 黑马帝 2011-11-25 20:31:04
沙发
因为你的div方法抛出了一个异常,所以在调用这个方法的时候必须捕获或者继续向外抛出这个异常
异常并不是什么时候都会发生的,提示需要捕获或抛出只是告诉你有可能会发生异常,你需要去处理
你这个程序之所以抛出异常是因为Y有可能为0  而0 不可以作为除数
然而你在调用的时候传递的y = 1 所以异常未被触发
当你传递div(x, 0)的时候就会捕获异常了

评分

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

查看全部评分

回复 使用道具 举报
胡威 黑马帝 2011-11-25 22:37:59
藤椅
java.lang里面定义了一个Class Exception,那个Exception和这里的Exception是一样的吗
回复 使用道具 举报
因为在执行d.div(4,1)这个方法时,没有异常发生,所以捕捉不到异常啊。就像你安装了一个报警器,没有事故发生,它不能随便乱叫吧!

评分

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

查看全部评分

回复 使用道具 举报
胡威 黑马帝 2011-11-26 00:04:50
报纸
为什么这里不是throws ArithmeticException,为什么用Exception也可以啊,只看Exception怎么知道抛出的具体是什么异常啊?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马