参考回答:
throw 在方法体内使用,throws 在方法声明上使用;
throw 后面接的是异常对象,只能接一个。throws 后面接的是异常类型,可以接多个,多个异常类型用逗号隔开;
throw 是在方法中出现不正确情况时,手动来抛出异常,结束方法的,执行了 throw 语句一定会出现异常。而 throws 是用来声明当前方法有可能会出现某种异常的,如果出现了相应的异常,将由调用者来处理,声明了异常不一定会出现异常。
解析: throw 和 throws 都是用来进行 Java 异常处理的。
其中,throw 是用在某个方法的方法体内的,当我们认定某种情况不合理时,就可以创建异常对象,封装好异常信息,然后通过 throw 来抛出异常并终止该方法。
public class Student {
// 性别
private String gender;
public String getGender() {
return gender;
}
public void setGender(String gender) {
if (!("男".equals(gender) || "女".equals(gender))) {
throw new IllegalArgumentException("非法性别:" + gender);
}
this.gender = gender;
}
}
而 throws 是用在某个方法的方法声明上的,表示当前方法如果抛出了某些异常,将由调用者来进行异常处理。这种方式也可以让调用者知晓该对哪些异常进行处理。throws 声明的异常不一定会出现,只是一种可能。
public class FileInputStream extends InputStream {
public FileInputStream(String name) throws FileNotFoundException {
this(name != null ? new File(name) : null);
}
}