java中throw与throws的区别
throws主要是声明这个方法会抛出这种类型的异常,使它的调用者知道要捕获这个异常。
throw是具体向外抛异常的动作,所以它是抛出一个异常实例。
throws说明你有那个可能,倾向。
throw的话,那就是你把那个倾向变成真实的了。
同时:
1、throws出现在方法函数头;而throw出现在函数体。
2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。
3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。
下面一代码解释说明:
package com.xing.tyy;
public class Student {
String name;
String sex;
int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
//throw与throws的区别
public void setAge(int age) throws Exception {
if (age > 12 && age < 20) {
this.age = age;
} else {
Exception e = new Exception("你输入的年龄过大!");
throw e;
}
}
}
package com.xing.tyy;
import org.apache.log4j.Logger;
public class test2 {
public static Logger logger1 = Logger.getLogger("test2.class");
public static void main(String[] args) {
Student d = new Student();
logger1.info("sdfsd");
try {
d.setAge(30);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}