黑马程序员技术交流社区

标题: 求助:为什么exception跟RuntimeExcepiton一样,编译时不检测,运行时检测呢? [打印本页]

作者: 忘壳    时间: 2014-8-22 08:41
标题: 求助:为什么exception跟RuntimeExcepiton一样,编译时不检测,运行时检测呢?
基础视频中毕老师总结
对于异常分两种
1、编译时被检测的异常
2、编译时不被检测的异常,运行时异常,RuntimeException以及其子类
但是,下面这段Exception代码编译时,也没有报错。
class Demo
{
        int div(int a,int b)throws Exception //在功能上通过throws的关键字声明了该功能有可能会出现问题
        {
                return a/b;
        }
}
class ExceptionDemo
{
        public static void main(String[] args)
        {
        Demo d=new Demo();
        try
        {
                int x=d.div(4,0);
        System.out.println("x="+x);
        }
        catch (Exception e)//Exception e=new ArithmeticException();
        {
                System.out.println("除零啦");
                System.out.println(e.getMessage());// /by zero;
                System.out.println(e.toString());//异常名称:异常信息
                e.printStackTrace();//异常名称:异常信息,异常出现位置
        }
       
        System.out.println("over");
        }
}
这时为什么?哪位高手帮忙解答一下。
作者: 谢建平    时间: 2014-8-22 09:03
你都try  catch  处理了 怎么报错....
作者: Darkhorse′Xa    时间: 2014-8-22 09:57
出异常也给你捕获处理了
作者: 胡天杭    时间: 2014-8-22 15:58
这是运行时异常,所以编译不会出错。你运行是异常又被try...catch...捕获,所以没报错!
作者: happymouse    时间: 2014-8-22 16:05
建议LZ说下为什么会认为这个代码应该报编译时异常,让大家给解释下,不过LZ写的这个代码不报异常是正常的
作者: 忘壳    时间: 2014-8-22 17:33
胡天杭 发表于 2014-8-22 15:58
这是运行时异常,所以编译不会出错。你运行是异常又被try...catch...捕获,所以没报错! ...

运行时异常是不是只有RuntimeException呀,没报错因为我给catch处理了。
作者: 亨利大帝    时间: 2014-8-22 21:33
这一块我也没弄懂 同求大神解答
作者: java--周群    时间: 2014-8-22 23:29
是不是打印了4句话,然后没有打印出X的值
作者: java--周群    时间: 2014-8-22 23:32
打印了5句话,但是没有打印X的值
作者: 胡天杭    时间: 2014-8-26 21:45
忘壳 发表于 2014-8-22 17:33
运行时异常是不是只有RuntimeException呀,没报错因为我给catch处理了。

呃。。。我大概只能解释这么多了,能力有限Orz
作者: LFW    时间: 2014-8-27 10:36
这里本来就不会报错啊,你的div()可能会出错,所以用throws声明,那么调用div的程序员就知道,调用div必须进行抛出或处理,你都用try()catch()处理了,编译自然不会错。如果main函数调用div中的try()catch()你给删了,就编译出错了。但这时你将Exception改成RuntimeException又不会报错,是因为RuntimeException是编译时不会被检测的,它是运行时异常,运行时异常一旦出错程序就会立即停止。(仅从程序代码来将,不从什么时候该用RuntimeException什么时候用Exception的角度)
作者: 彭卫红    时间: 2014-8-28 00:17
异常分为编译异常,就是编译时会报错,可以try,可以throw
还有运行时异常,就是runtimeException,编译时不会报错,就是编译可以通过,语法没有问题。
那么问题就出在其他问题,一般不好改




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