Skip to content

throws 关键字

throws 关键字主要在方法定义上使用,表示此方法中不进行异常的处理,而是交给被调用处处理。

java
class MyMath {
	public static int div(int x, int y) throws Exception { // 此方法不处理异常
		return x / y;
	}
}
class MyMath {
	public static int div(int x, int y) throws Exception { // 此方法不处理异常
		return x / y;
	}
}

本程序定义了一个除法计算操作,但是在 div() 方法上使用了 throws 关键字进行声明,这样就表示在本方法中所产生的任何异常本方法都可以不用处理(如果在方法中处理也可以) ,而是直接交给程序的被调用处进行处理。由于 div() 方法上存在 throws 抛出的 Exception 异常,则当调用此方法时必须明确地处理可能会出现的异常。

java
public class TestDemo {
	public static void main(String args[]) {
		try {			// div()方法抛出异常,必须明确进行异常处理
			System.out.println(MyMath.div(10, 2));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
public class TestDemo {
	public static void main(String args[]) {
		try {			// div()方法抛出异常,必须明确进行异常处理
			System.out.println(MyMath.div(10, 2));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

本程序由于 MyMath 类的 div() 方法定义上已经明确地抛出了异常,所以调用时必须写上异常处理语句,否则会在编译时出现语法错误。

主方法上也可以使用 throws 抛出

主方法本身也属于一个 Java 中的方法,所以在主方法上如果使用了 throws 抛出,就表示在主方法里面可以不用强制性地进行异常处理,如果出现了异常,将交给 JVM 进行默认处理,则此时会导致程序中断执行。

java
public class TestDemo {
	public static void main(String args[]) throws Exception {
		// 表示此异常产生后会直接通过主方法抛出,代码中可以不强制使用异常处理
		System.out.println(MyMath.div(10, 0));
	}
}
public class TestDemo {
	public static void main(String args[]) throws Exception {
		// 表示此异常产生后会直接通过主方法抛出,代码中可以不强制使用异常处理
		System.out.println(MyMath.div(10, 0));
	}
}

此时采用的是 JVM 中的默认方式对产生的异常进行处理。但是从实际开发来讲,主方法上不建议使用 throws ,因为如果程序出现了错误,也希望其可以正常结束调用。

用心去做高质量的编程学习内容网站,欢迎star ⭐让更多人发现!