throws和throw的区别
throw与throws的比较
- throws出现在方法定义里面,放在声明里面;而throw出现在函数体表示具体的抛出异常。
- throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。
- 两者都是只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理.
throw
- 用在方法体内,跟的是异常对象名
public class Test{
public static void main(String[] args) {
try{
throwChecked(-3);
}catch (Exception e){
System.out.println(e.getMessage());
- 只能抛出一个异常对象名
- 表示抛出异常,由方法体内的语句处理
- throw则是抛出了异常,执行throw则一定抛出了某种异常
throws
- 用在方法声明后面,跟的是异常类名
使用throws需要自己定义一个异常类
public Exception(){
}
class Math{
public int div(int i,int j) throws Exception{
int t=i/j;
return t;
- 可以跟多个异常类名,用逗号隔开
- 表示抛出异常,由该方法的调用者来处理
- throws表示出现异常的一种可能性,并不一定会发生这些异常
try-catch-finally
简单来说先执行try,出现错误执行catch,程序最终都会执行finlly
import java.util.InputMismatchException;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner reader=new Scanner(System.in);
try {
int n=reader.nextInt();
System.out.println(10-n);
}
catch(InputMismatchException e) {
System.out.println("not int");
}
finally {
System.out.println("end");
}
}
}
输出:
ssss
not int
end
2
8
end