Java的throws关键字用于声明异常。它向程序员提供了可能发生异常的信息。
因此,最好为程序员提供异常处理代码,以便保持程序的正常流程。
异常处理主要用于处理已检查异常。如果出现任何未检查的异常,例如NullPointerException,则是程序员的错误,他在使用代码之前没有进行检查。
Java throws的语法
return_type method_name() throws exception_class_name{//方法代码}
哪些异常应该声明?
答:只有已检查的异常,因为:
-
未检查的异常:在我们的控制范围内,因此我们可以纠正我们的代码。
-
错误:超出我们的控制范围。例如,如果发生VirtualMachineError或StackOverflowError,我们无法做任何事情。
Java throws关键字的优点
现在可以传播(在调用堆栈中转发)已检查的异常。
它向方法的调用者提供关于异常的信息。
Java throws示例
让我们看一下Java throws子句的示例,该示例说明了可以使用throws关键字传播已检查的异常。
Testthrows1.java
import java.io.IOException;class Testthrows1{void m()throws IOException{throw new IOException("device error");//checked exception}void n()throws IOException{m();}void p(){try{n();}catch(Exception e){System.out.println("exception handled");}}public static void main(String args[]){Testthrows1 obj=new Testthrows1();obj.p();System.out.println("normal flow...");}}
输出:
exception handlednormal flow...
有两种情况:
-
情况1:我们捕获了异常,即我们使用try/catch块处理了异常。
-
情况2:我们声明了异常,即在方法中使用了throws关键字。
情况1:使用try-catch块处理异常
如果我们处理了异Java throws关键字
import java.io.*;class M{void method()throws IOException{throw new IOException("device error");}}public class Testthrows2{public static void main(String args[]){try{M m=new M();m.method();}catch(Exception e){System.out.println("exception handled");}System.out.println("normal flow...");}}
输出:
exception handlednormal flow...
情况2:声明异常
-
如果我们声明了异常,且异常未发生,代码将正常执行。
-
如果我们声明了异常且异常发生,它将在运行时抛出,因为throws不处理异常。
让我们为这两种情况看一些示例。
A) 如果异常未发生
Testthrows3.javaimport java.io.*;class M{void method()throws IOException{System.out.println("device operation performed");}}class Testthrows3{public static void main(String args[])throws IOException{//声明异常M m=new M();m.method();System.out.println("normal flow...");}}
输出:
device operation performednormal flow...
B) 如果异常发生
Testthrows4.java
import java.io.*;class M{void method()throws IOException{throw new IOException("device error");}}class Testthrows4{public static void main(String args[])throws IOException{//declare exceptionM m=new M();m.method();System.out.println("normal flow...");}}
输出:




















