java小白——抛出异常中throw和throws的区别

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
错误

发布了82 篇原创文章 · 获赞 21 · 访问量 2045

猜你喜欢

转载自blog.csdn.net/weixin_45174208/article/details/103356171