一、throws
调用方法时,为了能让调用者知道方法是否会发生异常?发生什么异常。针对这种情况,可以使用throws关键字对外声明该方法有可能发生异常,这样调用者在调用方法时,就会知道该方法的异常,从而捕获异常并处理
将关键字 throws 置于方法名后 并在throws后抛出异常
public class cs {
public void cs(int value) throws Exception{
//代码块
}
public static void main(String[] args) {
cs cs=new cs();
try {
cs.cs(0);
//可以所有try/catch环绕或继续抛出异常
}catch (Exception e){
System.out.println("错误");
}
}
}
注:可以同时抛出多个异常
public class cs {
public void cs(int value) throws NullPointerException,ArithmeticException{
//代码块
}
public static void main(String[] args) {
cs cs=new cs();
try {
cs.cs(0);
//可以所有try/catch环绕或继续抛出异常
}catch (ArithmeticException a){
System.out.println("错误");
}catch (NullPointerException n){
System.out.println("错误");
}
}
}
二、throw
如果需要在程序中自行抛出异常,则应使用 throw 语句,throw 语句可以单独使用,throw 语句抛出的不是异常类,而是一个异常实例,而且每次只能抛出一个异常实例。
if (true){
System.out.println("正确");
}else if(false){
try {
//抛出一个异常
throw new Exception("错误");
//可以使用try/catch环绕或将异常继续抛出去
} catch (Exception e) {
e.printStackTrace();
}
}
三、throws和throw的区别
1、共同点
两者在抛出异常时,抛出异常的方法并不负责处理,顾名思义,只管抛出,由调用者负责处理
2、不同点
(1)、throws用于方法头,表示的只是异常的申明,而throw用于方法内部,抛出的是异常对象
(2)、throws可以一次性抛出多个异常,而throw只能一个
(3)、throws抛出异常时,调用者必须申明抛出异常或者捕获,不然编译报错。而throw的话,可以不申明或不捕获,但编译器不会报错