Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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_Try Catch_Try Catch Finally - Fatal编程技术网

Java 编译器如何理解下面要运行的异常?

Java 编译器如何理解下面要运行的异常?,java,exception,try-catch,try-catch-finally,Java,Exception,Try Catch,Try Catch Finally,此处不抛出NullPointerException。但是,没有捕捉它的捕捉块。看起来IOException正在挤压NullPointerException。你对此有何评论?我不明白 NullPointerException不会在此处抛出 事实上,它是。。。假设代码到达您显式抛出它的语句 但问题是内部的try有一个finally块。在finally块中,您显式抛出一个IOException。这将替换原始异常 该行为在中指定。管理您的示例的文本是: “如果由于抛出值V而导致try块的执行突然完成,则

此处不抛出NullPointerException。但是,没有捕捉它的捕捉块。看起来IOException正在挤压NullPointerException。你对此有何评论?我不明白

NullPointerException
不会在此处抛出

事实上,它是。。。假设代码到达您显式抛出它的语句

但问题是内部的
try
有一个
finally
块。在
finally
块中,您显式抛出一个
IOException
。这将替换原始异常

该行为在中指定。管理您的示例的文本是:

“如果由于抛出值
V
而导致
try
块的执行突然完成,则有一个选择:

  • 如果
    finally
    块由于原因
    S
    而突然完成,则
    try
    语句由于原因
    S
    而突然完成(并且值
    V
    throw
    被丢弃和遗忘)

看起来,
IOException
正在挤压
NullPointerException

有点。然而,我们使用非正式术语挤压来指捕获和忽略异常的实践



那么它在运行时只能处理一个异常


这是正确的。在任何时间点上,每个线程最多只能有一个“突然终止原因”。

那么它在运行时只能处理一个异常。谢谢你的回答
    try {
        Image image = new Image("MyComputer/Documents/Photos/estambul.jpg");

        try {
            //...

            image.print();

            throw new NullPointerException();
        } finally {
            System.out.println("FINALLY");
            image.close();
            throw new IOException();
        }
    } catch (IOException ex){
        System.out.println("IO_EXCEPTION");
        System.out.println(ex.getMessage());
    }

    System.out.println("THREAD IS CONTINUE");