Java-throw和throws的区别
1)throw
throw是Java中引入的用于异常处理的关键字。
有时我们可以显式创建异常对象,并且可以手动将它们切换到jvm,因此必须使用throw关键字。
throw关键字的目的是将我们创建的异常对象手动移交给jvm。
示例1:借助throw关键字
class ThrowExample{
public static void main(String[] args){
System.out.println(10/0);
throw new ArithmeticException("/ by zero");
}
}
输出结果
D:\Java Articles>java ThrowExampleException in thread "main" java.lang.ArithmeticException: / by zero
at ThrowExample.main(ThrowExample.java:6)
示例2:没有throw关键字的帮助
class ThrowExample{
public static void main(String[] args){
System.out.println(10/0);
}
}
输出结果
D:\Java Articles>java WithoutThrowException in thread "main" java.lang.ArithmeticException: / by zero
at WithoutThrow.main(WithoutThrow.java:6)
在示例1中,开发人员负责显式创建异常对象并将对象手动移交给jvm(即,此处的main方法不负责内部创建对象并将其移交给jvm)。我们将通过两种方式获得相同的输出,并且方法不同。
在示例2中,
main()
方法负责显式创建异常对象并在内部将对象移交给jvm(即,此处程序员不负责手动创建对象并移交给jvm)。我们将通过两种方式获得相同的输出,并且方法也不同。throw关键字用于从Java中的任何方法或静态块引发异常。
throw关键字的最佳用途是针对用户定义或自定义的异常。
throw关键字仅适用于Throwable对象。
2)throws
throws是Java中引入的用于异常处理的关键字。
在我们的程序中,如果有引发检查异常的可能性,则必须执行检查异常,否则我们将得到编译时错误(即,必须捕获或声明抛出未报告的异常xxx(异常名称位于xxx)) 。
范例1:
import java.io.*;class ThrowsExample{
public static void main(String[] args){
PrintWriter pw = new PrintWriter("java.txt");
pw.println("welcome in java world");
}
}
输出结果
D:\Java Articles>javac ThrowsExample.javaThrowsExample.java:6: error: unreported exception FileNotFoundException; must be
caught or declared to be thrown
PrintWriter pw = new PrintWriter("java.txt");
^
1 error
我们可以使用throws关键字将职责委托给调用方方法(即它可以是另一个方法或jvm),然后调用方方法负责处理该异常。
范例2:
class ThrowsExample2 {public static void main(String[] args) throws InterruptedException{
Thread.sleep(1000);
}
}
throws关键字仅适用于检查的异常,否则我们将得到编译时错误(即,未报告的异常)。
对未经检查的异常使用throws关键字是没有意义的,如果需要,可以使用它,但不会产生编译时错误(对未经检查的异常没有影响)。
throws关键字不能防止程序异常终止。
以上是 Java-throw和throws的区别 的全部内容, 来源链接: utcz.com/z/326416.html