Java throws关键字用于声明异常。它向程序员提供了可能发生异常的信息, 因此, 程序员最好提供异常处理代码, 以便可以维持正常的流程。
异常处理主要用于处理检查的异常。如果发生任何未检查的异常(例如NullPointerException), 则程序员会犯错, 他在使用代码之前没有执行检查。
Java throw的语法
return_type method_name() throws exception_class_name{
//method code
}
应该声明哪个异常
Ans)仅检查异常, 因为:
- 未经检查的异常:在你的控制之下, 请更正你的代码。
- 错误:超出你的控制范围, 例如如果发生VirtualMachineError或StackOverflowError, 你将无法执行任何操作。
现在可以传播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。 |
- 如果你处理了异常, 则无论程序中是否发生异常, 都可以很好地执行代码。
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无法处理该异常。
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)我们可以抛出异常吗?
【Java抛出关键字(throw和throws)】是的, 通过在catch块中抛出相同的异常。
推荐阅读
- Java try-catch块
- Java抛出异常(throw关键字:throw关键字)
- Java静态嵌套类
- Java套接字编程
- Java中的ResourceBundle类
- Applet中的参数
- 小程序中的绘画
- newInstance()方法
- 10大Docker替代品(最佳容器虚拟化软件推荐)