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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 完美恋爱 高级黑马   /  2013-12-6 09:06  /  975 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 完美恋爱 于 2013-12-6 11:21 编辑

class Fu extends Exception{}
class Zi extends Fu{}

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

这问这段代码为什么编译失败啊?

4 个回复

倒序浏览
当使用多个catch子句来处理一段代码可能会引发的多个异常,应把父类异常放到最后。
代码应该为:
  1. class Fu extends Exception{}
  2. class Zi extends Fu{}

  3. class Demo{
  4.          public static void main(String[] args){
  5.                  try{
  6.                          throw new Zi();
  7.                  }catch(Fu e){
  8.                          System.out.println("Fu");
  9.          }catch(Exception e){
  10.                  System.out.println("Exception");
  11.          }
  12.      }
  13. }
复制代码
回复 使用道具 举报
catch(Exception e)
                {
                        System.out.println("Exception");
                }
                catch(Fu e)
                {
                        System.out.println("Fu");
                }
Fu这个类继承的是Exception 上面又捕捉了一个Exception 等于Exception被捕获了两次 重复 删除一个就可以 或者将
catch(Fu e)
                {
                        System.out.println("Fu");
                }
放在catch(Exception e)的上面
回复 使用道具 举报
                try
                {
                        throw new Zi();
                }               
                catch(Exception e)
                {
                        System.out.println("Exception");
                }
                catch(Fu e)
                {
                        System.out.println("Fu");
                }

try catch模块里父类的exception应该放到最后一个代码块上
否则第一个就把父类的exception执行完了,后边的代码就没有意义了。
基础班毕老师的视频再好好看一下。
回复 使用道具 举报

class Fu extends Exception{}
class Zi extends Fu{}

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

第一种解决方式,将       catch(Exception e)
                {
                        System.out.println("Exception");
                }放在最下面
第二种解决方式,删掉其中的一个catch语句块。

要记住一个原则,当有多个catch语句时,应该将父类或者说是超类的捕获语句块放在最下面
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马