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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 人心如水 中级黑马   /  2014-6-22 15:54  /  981 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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");
                }
        }
}

6 个回复

倒序浏览
抛出的异常只能被一个catch()捕并到处理。
因为你Exc0继承是Exception,而Exc1又继承Exc0,所以抛出的Exc1对象肯定会被第一个catch(Exception e) 捕捉到,就轮不到后面的catch了。
定义catch的时候 ,要把捕捉子类的异常的放在前面,捕捉父类异常的放在后面。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报 1 0
try有三种类型,try finally  ;try  catch finally;  try  catch  ;
try  catch  类型的 没有两个或多个  catch的情况
回复 使用道具 举报
踏雪风暴 发表于 2014-6-22 17:28
try有三种类型,try finally  ;try  catch finally;  try  catch  ;
try  catch  类型的 没有两个或多个 ...

如果说的不对可以告诉我哦
回复 使用道具 举报
黎志勇 发表于 2014-6-22 16:24
抛出的异常只能被一个catch()捕并到处理。
因为你Exc0继承是Exception,而Exc1又继承Exc0,所以抛出的Exc1 ...

谢谢了啊
回复 使用道具 举报
父异常都得往后放
回复 使用道具 举报
拋几个抓几个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马