黑马程序员技术交流社区

标题: 异常处理:异常处理模型中,没有catch也可以编译成功,为什么啊 [打印本页]

作者: 田晓莉    时间: 2015-3-18 10:33
标题: 异常处理:异常处理模型中,没有catch也可以编译成功,为什么啊
异常部分里面,try{}部分写有可能出现问题的代码,catch是用于处理异常。如果检测到并且抛出异常,但是没有catch,这样被抛出的异常不就是没有被处理,这种情况为什么还可以编译成功啊?
作者: huhanghao    时间: 2015-3-18 12:19
在异常处理中,有三种类型的异常,第一种是error,第二种是exception,第三种是runtimeexception。感觉楼主应该问的是第二种。对于这种异常的处理。分为两种,一种是不用抛出,在内部,try catch自己搞定。第二种是抛出去,让别人去try catch。既然楼主已经选择抛出,那么自然就能编译过。但是对于第三种异常,只需要抛出就好了,不用catch也没关系
作者: One_M    时间: 2015-3-18 12:44
在JAVA 中异常的处理有两种 抛出和处理,编译过程中检测到有抛出就能编译通过检测语句是否正确,而try catch 是在运行中处理的,所以如果有抛出了程序中不写catch也是可以编译通过的。 而 RuntimeException 是特殊的一种,这类异常是即使不写抛出语句也能正常通过(可省略抛出语句)
作者: 田晓莉    时间: 2015-3-18 13:33
One_M 发表于 2015-3-18 12:44
在JAVA 中异常的处理有两种 抛出和处理,编译过程中检测到有抛出就能编译通过检测语句是否正确,而try catc ...

懂了~讲的很清晰,谢谢
作者: 有丶时候    时间: 2015-3-18 17:30
我是来看大神们的回复的,受教了
作者: 混乱的世界    时间: 2015-3-19 00:07
本帖最后由 混乱的世界 于 2015-3-19 00:17 编辑

我是这样理解的,异常就两种,一种编译异常,一种是运行异常,编译异常就是编译就出问题的,运行异常是编译没错,运行就出异常。
最好是把你的代码贴出来看看
class Div
{
        int div(int a,int b)
        {
                return a/b;
        }
}
public class ExceptionDemo {
        public static void main(String[] args)
        {
                Div d=new Div();
                int b;

    try
        {

            b = d.div(5, 0);
            System.out.println(b);
        }
                //catch (Exception e)
                {
                        //e.printStackTrace();
                }
                System.out.println("over!!");
        }
}只有Try{}会报错的






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