Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这个条款的重点是什么?_Java_Exception_Throws - Fatal编程技术网

Java 这个条款的重点是什么?

Java 这个条款的重点是什么?,java,exception,throws,Java,Exception,Throws,我理解检查异常的意义:提醒开发人员您需要注意的错误。我也理解,如果无法从异常中恢复,则不处理这些异常的意义。但为什么如果您决定不处理已检查的错误,就必须包含一个throws语句。如果运行此代码,则会出现运行时错误,如果注释掉抛出的语句(并添加{),则会出现编译时错误。如果仍中断程序,则将错误抛出main(),似乎没有意义 import java.io.IOException; public class Blah { public static void main(String[] a

我理解检查异常的意义:提醒开发人员您需要注意的错误。我也理解,如果无法从异常中恢复,则不处理这些异常的意义。但为什么如果您决定不处理已检查的错误,就必须包含一个
throws
语句。如果运行此代码,则会出现运行时错误,如果注释掉
抛出的
语句(并添加
{
),则会出现编译时错误。如果仍中断程序,则将错误抛出
main()
,似乎没有意义

import java.io.IOException;

public class Blah {

    public static void main(String[] args) 
        throws IOException {

        throw new IOException();

    }

}

throws
子句表示允许一个方法抛出某些异常。它规定了该方法与其调用方之间的契约,让他们知道它可以抛出哪些已检查的异常,以及调用方应该准备处理哪些异常,但被调用的方法不必每次都抛出它们,或者根本不需要抛出它们.

throws
子句表示允许一个方法抛出某些异常。它规定了该方法与其调用方之间的契约,让他们知道它可以抛出哪些已检查的异常,以及调用方应该准备处理哪些异常,但被调用的方法不必每次都抛出这些异常,或者t all.

如果另一个程序使用该方法,它需要能够捕获和处理它

如果另一个程序使用该方法,它需要能够捕获和处理它

能够“躲开”的点通过将异常添加到methods throws子句中,可以灵活地创建其他人将要使用的代码。也许您的代码会获得异常,但您更希望方法的调用方处理它,而不是自己处理异常,从而让调用的开发人员知道发生了什么,而不仅仅是re-抛出异常或返回空值。

能够“闪避”的点通过将异常添加到methods throws子句中,可以灵活地创建其他人将要使用的代码。也许您的代码会获得异常,但您更希望方法的调用方处理它,而不是自己处理异常,从而让调用的开发人员知道发生了什么,而不仅仅是re-引发异常或返回空值

我理解检查异常的意义:提醒开发人员您需要注意的错误

事实上,它比这更强大。重点是迫使开发人员(您)在应用程序中的某个点上对错误采取措施。您可以做以下两件事之一:

  • 您可以在抛出异常的同一方法体中捕获并(希望)处理该异常

  • 您可以将异常添加到方法的
    throws
    列表中…以便它传播到方法的调用方。这将处理异常的初始责任放在调用方代码上

在此(一般)上下文中,
throws
的要点很清楚。如果该语言没有
throws
声明,那么Java的检查异常设计将无法工作1

关于java语言规范,这些规则同样适用于所有的java方法,包括<代码>主< /C> >方法。因此,你必须在“代码>主代码< /代码>上放置“无意义”<代码>抛出IOExtExabor >代码。但是这真的毫无意义吗?我不同意。考虑以下内容:

  • 如果允许异常从应用程序的入口点
    main
    传播出去,则用户会看到一个丑陋的堆栈跟踪。就他/她而言,您的应用程序已“崩溃”

    如果发生
    IOException
    ,Java编译器告诉您的
    main
    方法将“崩溃”不是更好吗

  • 假设您的应用程序中有两个类,它们都有
    main
    方法。是否允许它们都传播检查过的异常而不声明它们

  • 如果应用程序的代码库包含对
    main
    方法的特定调用,那么情况会怎样呢?像对待其他调用一样对待这样的调用不是更好吗?这取决于
    main
    方法在
    抛出
    子句中声明选中的异常

如您所见,有充分的理由希望
main
方法遵循与其他方法相同的异常规则


1-要么您必须用抛出的相同方法捕获选中的异常,而库方法不能抛出选中的异常,要么您需要在加载时对每个应用程序进行全局分析,以查看是否捕获到选中的异常

我理解检查异常的意义:提醒开发人员您需要注意的错误

事实上,它比这更强大。重点是迫使开发人员(您)在应用程序中的某个点上对错误采取措施。您可以做以下两件事之一:

  • 您可以在抛出异常的同一方法体中捕获并(希望)处理该异常

  • 您可以将异常添加到方法的
    throws
    列表中…以便它传播到方法的调用方。这将处理异常的初始责任放在调用方代码上

在此(一般)上下文中,
throws
的要点很清楚。如果该语言没有
throws
声明,那么Java的检查异常设计将无法工作1

关于java语言规范,这些规则同样适用于所有的java方法,包括<代码>主< /C> >方法。因此,你必须在“代码>主代码< /代码>上放置“无意义”<代码>抛出IOExtExabor >代码。但是这真的毫无意义吗?我不同意。考虑以下内容: