黑马程序员技术交流社区

标题: throw与throws的别与运行时异常非运行时异常 [打印本页]

作者: q19871127    时间: 2015-6-12 20:40
标题: throw与throws的别与运行时异常非运行时异常
throw:
1.它用于在方法体内,显示的抛出一个"异常对象";
2.它的作用同throws一样,当出现这样的异常时,同样抛出给"调用者";
3.throw一个异常,也就相当于"方法返回",后续代码将不会被执行。
4.throw一个运行时异常:
                          1).方法可以不声明throws;
                          2).调用者,可以捕获,也可以不捕获;
    throw一个非运行时异常:
                    1).方法声明处,必须显示的使用throws声明抛出这个异常;
                    2).调用者,必须捕获。否则不能通过编译;
throws:
在方法声明时,可以使用throws关键字,表示"我这个方法可能会抛出这样的异常";
                        1).throws后面可以跟多个"异常类型"的声明,使用逗号隔开;
                        2).如果throws后面声明的是"运行时异常",调用方可以捕获,可以不捕获。不捕获时,如果发生异常,由虚拟机去处理;
                                        如果throws后面声明的是"非运行时异常",调用方必须捕获,或抛出(如果在main中调用,就不建议抛出)。
注意:在main中不要再抛出了,再抛就抛给虚拟机了,就是打印异常信息,然后终止程序;

throws和throw的区别:
  1.使用位置:
        throws:用在方法声明时,在方法体上声明,表示我要抛出某种类型的异常;
        throw:用在方法体内。表示抛出某种类型的异常对象;
  2.throws后面跟的是"异常类的类名",可以有多个,用逗号隔开;
        throw后面跟"异常对象",只能有一个。

运行时异常与非运行时异常在继承关系中的使用:
一.父类方法没有声明异常:
                  子类:1.可以不声明抛出异常;
                          2.可以抛出"运行时异常";
                          3.不能抛出"非运行时异常";
  二.父类方法声明抛出"运行时异常":
                  子类:1.可以不声明抛出异常;
                          2.可以抛出任何的"运行时异常";
                          3.不能抛出"非运行时异常"
  三.父类方法声明抛出"非运行时异常":
                  子类:1.可以不声明抛出异常;
                          2.可以抛出任何的"运行时异常";
                          3.可以抛出跟父类相同的"非运行时异常",但不能抛出其它的"非运行时异常"






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