黑马程序员技术交流社区

标题: 后面个catch为什么抓不到 [打印本页]

作者: 人心如水    时间: 2014-6-22 15:54
标题: 后面个catch为什么抓不到
class Exc0 extends Exception{}
class Exc1 extends Exc0{}

class Demo
{
        public static void main(String[] args)
        {
                try
                {
                        throw new Exc1();
                }               
                catch(Exception e)               
                {
                        System.out.println("Exception");
                }
                catch(Exc0 e)
                {
                        System.out.println("Exc0");
                }
        }
}

作者: 黎志勇    时间: 2014-6-22 16:24
抛出的异常只能被一个catch()捕并到处理。
因为你Exc0继承是Exception,而Exc1又继承Exc0,所以抛出的Exc1对象肯定会被第一个catch(Exception e) 捕捉到,就轮不到后面的catch了。
定义catch的时候 ,要把捕捉子类的异常的放在前面,捕捉父类异常的放在后面。
作者: 踏雪风暴    时间: 2014-6-22 17:28
try有三种类型,try finally  ;try  catch finally;  try  catch  ;
try  catch  类型的 没有两个或多个  catch的情况
作者: 踏雪风暴    时间: 2014-6-22 17:29
踏雪风暴 发表于 2014-6-22 17:28
try有三种类型,try finally  ;try  catch finally;  try  catch  ;
try  catch  类型的 没有两个或多个 ...

如果说的不对可以告诉我哦
作者: 人心如水    时间: 2014-6-24 17:27
黎志勇 发表于 2014-6-22 16:24
抛出的异常只能被一个catch()捕并到处理。
因为你Exc0继承是Exception,而Exc1又继承Exc0,所以抛出的Exc1 ...

谢谢了啊
作者: Jero    时间: 2014-6-24 21:38
父异常都得往后放
作者: 帅哥哥    时间: 2014-6-24 23:33
拋几个抓几个




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