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.可以抛出跟父类相同的"非运行时异常",但不能抛出其它的"非运行时异常"
|
|