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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张钧杰 中级黑马   /  2012-3-21 23:52  /  2492 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Demo
{
        int div(int a,int b)throws Exception
        {
                return a/b;
        }
}

class ExceptionDemo
{
        public static void main(String[] agrs)throws Exception
        {
                Demo d = new Demo();
                int x = d.div(4,0);
                System.out.println("x="+x);

                System.out.println("over");
        }
}



class Demo
{
        int div(int a,int b)
        {
                return a/b;
        }
}

class ExceptionDemo
{
        public static void main(String[] agrs)
        {
                Demo d = new Demo();
                int x = d.div(4,0);
                System.out.println("x="+x);

                System.out.println("over");
        }
}
执行程序都一样的报错,报错内容都一样,要不要加上throws Exception?

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 很给力!

查看全部评分

6 个回复

正序浏览
这是因为int x = d.div (4 , 0) ,零作为除数了,虚拟机会抛出ArithmeticException:/ by zero的异常,为此需要捕获异常。只需要在主函数中                             
               try
                  {
                int x = d.div(4,0);
                System.out.println("x="+x);
                System.out.println("over");
               }
                 catch (ArithmeticException e)
                 {
                       System.out.println("除零了");                                       
        }

即可。当然,将ArithmeticException替换为Exception也可以。
回复 使用道具 举报
当然要抛异常,不然怎么运行。

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 田斌 于 2012-3-22 00:09 编辑

int x = d.div(4,0);

try
{
int x = d.div(4,0);
}
catch(Exception e){
System.out.println("被除数不能为零");
}
回复 使用道具 举报
把异常抛出 然后自己手动try catch 处理,捕捉到异常

评分

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

查看全部评分

回复 使用道具 举报
哥们,这不是异常不异常的问题。0不能做除数。只能让程序停下来,或者try一下,让程序跳转。

评分

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

查看全部评分

回复 使用道具 举报
你的主函数也要抛的,主函数抛给虚拟机,给虚拟机去处理。
当然如果你抛的是RuntimeException异常就不需要。

评分

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

查看全部评分

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