Java throws关键字

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 handled
normal flow...

有两种情况:

  1. 情况1:我们捕获了异常,即我们使用try/catch块处理了异常。
  2. 情况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 handled
       normal flow...

情况2:声明异常

  • 如果我们声明了异常,且异常未发生,代码将正常执行。
  • 如果我们声明了异常且异常发生,它将在运行时抛出,因为throws不处理异常。

让我们为这两种情况看一些示例。

A) 如果异常未发生

Testthrows3.java

import 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 performed
       normal 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 exception  
     M m=new M();  
     m.method();  
  
    System.out.println("normal flow...");  
  }  
}  

输出:

图1

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想