throws:(让别人处理这个异常)
声明一个方法可能产生的异常
放在方法声明后面,跟的是异常类名
可以多个异常类名,逗号隔开
表示抛出异常但是我不一定处理,只是有可能发生,并不一定就会发生异常
举例代码:
package 异常;
import java.util.Scanner;
public class Test3 {
//throws在方法后边声明异常,其实就是自己不想对异常做出任何的处理,告诉别人自己可能出现的异常,交给别人处理,然别人处理
public static double Div(double x)throws RuntimeException{//我不想处理
double y = 100/x;
if(x == 0){
throw new RuntimeException("错误");//抛出一个具体的异常
}
return y;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double x = sc.nextDouble();
double y = Div(x);
System.out.println(y);
// TODO Auto-generated method stub
}
}
执行结果:
0
Exception in thread “main” java.lang.RuntimeException: 错误
at 异常.Test3.Div(Test3.java:11)
at 异常.Test3.main(Test3.java:19)
throw:(我自己处理这个异常)
抛出一个具体的异常,一般用在方法体内,跟的是异常对象名
一定要去处理这个异常
只能掏出一个异常对象名
执行代码:(捕捉异常自己处理)
package 异常;
import java.util.Scanner;
public class Test3 {
//throws在方法后边声明异常,其实就是自己不想对异常做出任何的处理,告诉别人自己可能出现的异常,交给别人处理,然别人处理
public static double Div(double x)throws RuntimeException{//我不想处理
double y = 100/x;
if(x == 0){
throw new RuntimeException("错误");//抛出一个具体的异常
}
return y;
}
public static void main(String[] args) {
try{
Scanner sc = new Scanner(System.in);
double x = sc.nextDouble();
double y = Div(x);
System.out.println(y);
// TODO Auto-generated method stub
}catch(RuntimeException ex){
System.out.println(ex.getMessage());
}
}
}
执行结果:
0
错误