个性化阅读
专注于IT技术分析

Java抛出关键字:throw和throws

Java throws关键字用于声明异常。它向程序员提供了可能发生异常的信息, 因此, 程序员最好提供异常处理代码, 以便可以维持正常的流程。

异常处理主要用于处理检查的异常。如果发生任何未检查的异常(例如NullPointerException), 则程序员会犯错, 他在使用代码之前没有执行检查。

Java throw的语法

return_type method_name() throws exception_class_name{
//method code
}

应该声明哪个异常

Ans)仅检查异常, 因为:

  • 未经检查的异常:在你的控制之下, 请更正你的代码。
  • 错误:超出你的控制范围, 例如如果发生VirtualMachineError或StackOverflowError, 你将无法执行任何操作。

Java的优势抛出关键字

现在可以传播Checked Exception(在调用堆栈中转发)。

它向方法的调用者提供有关异常的信息。


Java抛出例子

让我们看一下Java throws子句的示例, 该子句描述了可以通过throws关键字传播已检查的异常。

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:你捕获了异常, 即使用try / catch处理异常。情况2:你声明了异常, 即用方法指定throws。

案例1:你处理异常

  • 如果你处理了异常, 则无论程序中是否发生异常, 都可以很好地执行代码。
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...");
  }
}

立即测试

Output:exception handled
       normal flow...

情况2:你声明异常

  • A)如果你声明了异常, 则如果不发生异常, 代码将被很好地执行。
  • B)如果在发生异常时声明异常, 则在运行时将引发异常, 因为throws无法处理该异常。

A)如果没有发生异常则编程

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{//declare exception
     M m=new M();
     m.method();

    System.out.println("normal flow...");
  }
}

立即测试

Output:device operation performed
       normal flow...

B)如果发生异常, 请编程

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...");
  }
}

立即测试

Output:Runtime Exception

掷与掷之间的区别

点击我了解详情


e)我们可以抛出异常吗?

是的, 通过在catch块中抛出相同的异常。

赞(0)
未经允许不得转载:srcmini » Java抛出关键字:throw和throws

评论 抢沙发

评论前必须登录!