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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

异常部分里面,try{}部分写有可能出现问题的代码,catch是用于处理异常。如果检测到并且抛出异常,但是没有catch,这样被抛出的异常不就是没有被处理,这种情况为什么还可以编译成功啊?

5 个回复

倒序浏览
huhanghao 来自手机 中级黑马 2015-3-18 12:19:48
沙发
在异常处理中,有三种类型的异常,第一种是error,第二种是exception,第三种是runtimeexception。感觉楼主应该问的是第二种。对于这种异常的处理。分为两种,一种是不用抛出,在内部,try catch自己搞定。第二种是抛出去,让别人去try catch。既然楼主已经选择抛出,那么自然就能编译过。但是对于第三种异常,只需要抛出就好了,不用catch也没关系
回复 使用道具 举报
在JAVA 中异常的处理有两种 抛出和处理,编译过程中检测到有抛出就能编译通过检测语句是否正确,而try catch 是在运行中处理的,所以如果有抛出了程序中不写catch也是可以编译通过的。 而 RuntimeException 是特殊的一种,这类异常是即使不写抛出语句也能正常通过(可省略抛出语句)
回复 使用道具 举报
One_M 发表于 2015-3-18 12:44
在JAVA 中异常的处理有两种 抛出和处理,编译过程中检测到有抛出就能编译通过检测语句是否正确,而try catc ...

懂了~讲的很清晰,谢谢
回复 使用道具 举报
我是来看大神们的回复的,受教了
回复 使用道具 举报
本帖最后由 混乱的世界 于 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{}会报错的

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