void foo() throws FooException,Foo2Exception{
//other code
throw new FooException();
}
throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。不能单独使用,要么和try catch一起使用,要么和trows一起使用。
throws语句用在方法声明后面,表示这个方法可能会抛出异常, 表示的是一种倾向、可能,但不一定实际发生。由调用这个方法的上一级方法中的语句来处理 。后面可以跟多个异常,中间用逗号分割。
例如:
void doA() throws Exception1, Exception3 {
try {
……
} catch(Exception1 e) {
throw e;
} catch(Exception2 e) {
System.out.println("出错了");
}
if (a != b)
throw new Exception3("自定义异常");
}
代码块……中可能产生异常Exception1、Exception2和Exception3。
如果产生Exception1异常,则捕捉了之后抛出由该方法的调用者去做处理;
如果产生Exception2异常,则该方法自己做了处理(打印出了说出错了),所以该方法就不会再向外抛出Exception2异常了,void doA() throws Exception1,,Excpetion3里面的Exception2也就不用写了;
而Exception3异常是该方法的某段逻辑出错,程序员自己作了处理在该段逻辑错误的情况下抛出异常Exception3,则调用者也需要处理。