黑马程序员技术交流社区

标题: 基础求解 [打印本页]

作者: 曹倩    时间: 2012-10-9 21:11
标题: 基础求解
本帖最后由 曹倩 于 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");
                }
        }
}
    这题错在哪了呢? 我怎么看不出来
作者: 范泰洋    时间: 2012-10-9 21:17
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的后面
}
作者: 范泰洋    时间: 2012-10-9 21:19
如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面
作者: 曾浩    时间: 2012-10-9 21:19
父类异常要写在最下面  毕老师视频有讲

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

作者: 曹倩    时间: 2012-10-9 21:23
范泰洋 发表于 2012-10-9 21:17
Catch(Exception){
    System.out.println("Exception");   ||这里你捕捉了一个父类异常,下面还捕捉了一 ...

         {:2_32:} 原来是这样子 ~    ^_^ 感谢~
作者: 李兆宁    时间: 2012-10-9 21:26
  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:27
曹倩 发表于 2012-10-9 21:23
原来是这样子 ~    ^_^ 感谢~

{:2_36:}哈哈
作者: 柏占肖    时间: 2012-10-9 21:28
本帖最后由 柏占肖 于 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, 下载次数: 37)

QQ截图20121009211914.png

作者: 曹倩    时间: 2012-10-9 21:30
曾浩 发表于 2012-10-9 21:19
父类异常要写在最下面  毕老师视频有讲

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

          了解了~  谢啦~
作者: 曹倩    时间: 2012-10-9 21:33
李兆宁 发表于 2012-10-9 21:26
当存在异常继承时,子类放在前面,父类放在后面。。

              O(∩_∩)O  明白了~
作者: 给生活加点料    时间: 2012-10-9 23:37
多catch的情况下,要想表示父类,必须放在这段代码的最后。




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