Java throws抛出异常的用法(附带实例)
任何 Java 代码都有发生异常的可能性,如果方法不想对可能出现的异常做捕获处理,那么方法必须声明它可以抛出的这些异常,用于告知方法调用者此方法存在异常。
Java 通过 throws 子句声明方法可抛出的异常,throws 子句由 throws 关键字和要抛出的异常类两部分组成,如果需要抛出多个异常类,则异常类与异常类之间通过逗号隔开,其语法格式如下:
接下来,通过案例来演示 throws 关键字的使用。
throws 子句不仅可以在方法处声明拋出异常,在方法的调用者处也可以声明。如果主方法使用 throws 声明抛出异常,则异常会被 Java 虚拟机进行处理(Java 虚拟机处理会导致程序终止)。
接下来,通过案例来演示上述情况:
从执行结果中可以发现,程序虽然正常通过编译,但在运行时因为没有对异常进行处理,所以导致程序终止。由此可知,在 main() 方法中使用 throws 关键字抛出异常,程序一旦出现异常会由 Java 虚拟机进行处理,这将导致程序执行中断。
Java 通过 throws 子句声明方法可抛出的异常,throws 子句由 throws 关键字和要抛出的异常类两部分组成,如果需要抛出多个异常类,则异常类与异常类之间通过逗号隔开,其语法格式如下:
数据类型 方法名(参数列表) throws 异常类1,异常类2,…,异常类n{ 方法体; }方法一旦使用 throws 进行异常抛出,则表示当前方法不再对异常做任何处理,而是由方法调用者来进行处理。此时,无论原方法是否有异常发生,系统都会要求调用者必须对异常进行处理。
接下来,通过案例来演示 throws 关键字的使用。
public class Demo { public static void main(String[] args) { try { // 因为方法中声明抛出异常,不管是否发生异常,都必须处理 final int divide = divide(5, 0); // 调用divide()方法 System.out.println(divide); // 打印结果 } catch (ArithmeticException e) { System.out.println("异常信息:" + e); } System.out.println("异常捕获结束"); } // 声明抛出异常,本方法中可以不处理异常 public static int divide(int x, int y) throws ArithmeticException { int result = x / y; // 定义一个变量result,记录两个数相除的结果 return result; // 将结果返回 } }程序的运行结果如下:
异常信息:java.lang.ArithmeticException: / by zero
异常捕获结束
throws 子句不仅可以在方法处声明拋出异常,在方法的调用者处也可以声明。如果主方法使用 throws 声明抛出异常,则异常会被 Java 虚拟机进行处理(Java 虚拟机处理会导致程序终止)。
接下来,通过案例来演示上述情况:
public class Demo { // main()方法中不做处理,继续向上抛出异常 public static void main(String[] args) throws ArithmeticException { // 主方法在调用时未做捕获处理,因此JVM会直接报异常 final int divide = divide(5, 0); // 调用divide()方法 System.out.println(divide); // 打印结果 System.out.println("程序结束"); } // 下面的方法实现了两个整数相除 public static int divide(int x, int y) throws ArithmeticException { int result = x / y; // 定义一个变量result,记录两个数相除的结果 return result; // 将结果返回 } }程序的运行结果如下:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at com.aaa.p080501.Test.divide(Test.java:14)
at com.aaa.p080501.Test.main(Test.java:7)
从执行结果中可以发现,程序虽然正常通过编译,但在运行时因为没有对异常进行处理,所以导致程序终止。由此可知,在 main() 方法中使用 throws 关键字抛出异常,程序一旦出现异常会由 Java 虚拟机进行处理,这将导致程序执行中断。