Java-throw和throws的区别

1)throw

  1. throw是Java中引入的用于异常处理的关键字。

  2. 有时我们可以显式创建异常对象,并且可以手动将它们切换到jvm,因此必须使用throw关键字。

  3. 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 ThrowExample

Exception 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 WithoutThrow

Exception 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

  1. throws是Java中引入的用于异常处理的关键字。

  2. 在我们的程序中,如果有引发检查异常的可能性,则必须执行检查异常,否则我们将得到编译时错误(即,必须捕获或声明抛出未报告的异常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.java

ThrowsExample.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

回到顶部