Java try/catch block 在捕获异常时不输出文本

标签 java exception java-8

我一直在阅读《Head First Java 2E》一书,其中介绍了 Java 5,但我遇到了一个我不理解的异常处理问题。在异常处理章节中,本书给出了以下示例作为使用 try/catch block 捕获 MidiUnavailableException 的正确方法。

import javax.sound.midi.*;

public class MusicTest {

    public void play() {
        try {
            Sequencer sequencer = MidiSystem.getSequencer();
            System.out.println("Sequencer initialized...");
        } catch (MidiUnavailableException ex) {
            System.out.println("Bummer...");
        }
    }

    public static void main(String[] args) {
        MusicTest mt = new MusicTest();
        mt.play();
   }

}

如果没有 try/catch block ,程序将无法编译并出现 MidiUnavailableException。我希望通过上面的代码,我会得到输出:

Bummer...

相反,我得到

Sequencer initialized...

这只是 Java 5 和 Java 8 之间的区别还是我做错了什么?

最佳答案

我会尽量保持简短。

如果有异常,Try/catch block 就会处理异常。

但在某些情况下,您必须放置一个 try/catch block 才能使用可能引发异常的类。

因此,在您的情况下,如果将其取出,您的代码将无法编译,因为它要求 try/catch block ,这并不意味着总会有异常。

希望这有帮助。

关于Java try/catch block 在捕获异常时不输出文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36518397/

相关文章:

java - 流,检查两个对象列表是否具有相同的另一个对象的嵌套列表

java - 在 Java 8 的链式语句中检查 null 或检查异常的正确方法是什么?

java - 我需要一些帮助来理解java中的这段代码

api - Magento API 错误 : Invalid data given. 错误消息中的详细信息。 - 这个 "error message"在哪里?

java - CompletableFuture、Future 和 RxJava 的 Observable 的区别

ruby - 救援给定的匿名模块而不是异常类

.net - 为什么 try/catch 没有捕获访问冲突?

java - 如何将所有类放在一个通用类类型下?

java - 使用Java Kafka Consumer不进行commit操作是否正确?

java - 在 JTree 中显示 JTable 的行为不同,具有不同的外观和感觉