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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹倩 中级黑马   /  2012-10-9 21:11  /  2747 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 曹倩 于 2012-10-10 08:37 编辑

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");
                }
        }
}
    这题错在哪了呢? 我怎么看不出来

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 赞一个!

查看全部评分

10 个回复

倒序浏览
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");
                }
        }
}

Catch(Exception){
    System.out.println("Exception");   ||这里你捕捉了一个父类异常,下面还捕捉了一个子类异常。应该把这个Exception放在Exc0的后面
}

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

回复 使用道具 举报
如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面
回复 使用道具 举报
父类异常要写在最下面  毕老师视频有讲

catch(Exception e)    catch(Exc0 e) 交换位置就ok
回复 使用道具 举报
范泰洋 发表于 2012-10-9 21:17
Catch(Exception){
    System.out.println("Exception");   ||这里你捕捉了一个父类异常,下面还捕捉了一 ...

         {:2_32:} 原来是这样子 ~    ^_^ 感谢~
回复 使用道具 举报
  1. class Exc0 extends Exception{}
  2. class Exc1 extends Exc0{}

  3. class Test
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 try
  8.                 {
  9.                         throw new Exc1();
  10.                 }
  11.                 catch(Exc0 e)
  12.                 {
  13.                         System.out.println("Exc0");
  14.                 }               
  15.                 catch(Exception e)               
  16.                 {
  17.                         System.out.println("Exception");
  18.                 }
  19.         }
  20. }
复制代码
当存在异常继承时,子类放在前面,父类放在后面。。
回复 使用道具 举报
曹倩 发表于 2012-10-9 21:23
原来是这样子 ~    ^_^ 感谢~

{:2_36:}哈哈
回复 使用道具 举报
本帖最后由 柏占肖 于 2012-10-9 21:29 编辑


意思就是说catch(Exc0 e){System.out.println("Exc0"); }这个代码块执行不到,因为Exception是Exc0的父类,如果出现了Exc0这个类型的异常就被当做是Exception类型的异常处理了,你有两种更改方式
1,删除catch(Exc0 e){System.out.println("Exc0"); }这个代码块
2,从main方法里抛出Exc0类型的异常

QQ截图20121009211914.png (7.57 KB, 下载次数: 40)

QQ截图20121009211914.png
回复 使用道具 举报
曹倩 中级黑马 2012-10-9 21:30:51
9#
曾浩 发表于 2012-10-9 21:19
父类异常要写在最下面  毕老师视频有讲

catch(Exception e)    catch(Exc0 e) 交换位置就ok

          了解了~  谢啦~
回复 使用道具 举报
李兆宁 发表于 2012-10-9 21:26
当存在异常继承时,子类放在前面,父类放在后面。。

              O(∩_∩)O  明白了~
回复 使用道具 举报
多catch的情况下,要想表示父类,必须放在这段代码的最后。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马