黑马程序员技术交流社区

标题: 在学习异常是的一个疑惑 [打印本页]

作者: zclove898    时间: 2011-12-12 00:18
标题: 在学习异常是的一个疑惑
本帖最后由 zclove898 于 2011-12-12 22:49 编辑

看一下这个程序:
class Demo
{
      int div(int a,int b)throws Exception
      {
             return a/b;
      }
}
class Exception
{
       public static void main(String[]  args)throws Exception
        {
          Demo d=new Demo();
           int x=d.div(4,0);
         Systim.out.println("x="+x);
              Systm.out.println("over)";      
        }
}
这个程序中,主函数main(String[] agrs)后加上throws Exception与不加运行结果是一样的,问:加上throw Exception有什么作用     
作者: 吴上储    时间: 2011-12-12 00:32
怎么可能 你主函数 不加throws Exception 首先编译器就会报Unhandled exception type Exception   不让你通过 加上throws Exception 就是说 我知道这里可能会出错 出错时把这个异常抛出来。
作者: 应国炎    时间: 2011-12-12 08:57
不加的话就是语法错误,编译是不通过的.  加了说明把问题抛给JVM来处理了.

不加也行,可以用try来处理掉
作者: zoufan7410    时间: 2011-12-12 09:12
首先你要知道为什么要声明throws,是因为main里调用了一个己声明异常的div方法,就像你买个配件,别人要告诉你这个配件在什么情况下会发产异常一样,这时你用这配件时如果出现了异常,你就知道该怎么处理这异常一样是一个道理,如果你不在main上面声明,JVM就不知道怎么处理了。就会报编译错误,如果你不想要JVM处理这异常的,你就要用Try catch 语句自己处理。
作者: 唐秀启    时间: 2011-12-12 09:20
int div(int a,int b)throws Exception
throws Exception是抛出异常,然而下面你又没有用try catch 处理异常,直接把异常抛到主函数中去了
而在主函数中
public static void main(String[]  args)throws Exception
又抛出异常,没有处理异常。。把这个异常直接抛给了JVM

当你输入除数是0时,报/by zero异常




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