gpt4 book ai didi

Java奇怪的行为: Program cancels but no Exception is thrown

转载 作者:太空宇宙 更新时间:2023-11-04 07:12:43 25 4
gpt4 key购买 nike

我的应用程序(基于 vlcj 的音乐播放器)有一个非常奇怪的行为。我使用 ConcurrentHashMap 来缓存有关艺术家的信息。

如果我在 HashMap 上调用 get ,程序似乎会停止,但不会引发异常。 “a”已被打印出来,但“b”从未被打印出来

在一个单独的线程中,我运行了死锁检查,但没有检测到死锁,并且我非常确定我没有在另一个线程中使用缓存。

public void newMedia(MediaPlayer mediaPlayer) {
MusicListItem item = this.playListModel.getActiveItem();

System.out.println("a");
// cachedArtists = ConcurrentHashMap<String, Artist>
Artist artist = this.cachedArtists.get(item.getArtist());
System.out.println("b");
}

我发现了 JVM 错误吗?

这是我的 JVM:java版本“1.7.0_40”Java(TM) SE 运行时环境(版本 1.7.0_40-b43)Java HotSpot(TM) 64 位服务器 VM(内部版本 24.0-b56,混合模式)

最佳答案

我在这里看到三件事可能会出错,您可能想检查它们是否真的会发生(我没有足够的上下文来判断):

  • cachedArtists 可能为 null
  • item 可能为 null(playListModel 中没有 Activity 项目)
  • item.getArtist() 可能会出错(异常或 System.exit())
大多数这些情况都涉及抛出异常,因此您会期望看到堆栈跟踪,但也许这被吞噬在调用堆栈中的某个地方 - 再说一次,我没有上下文可以告诉。最好遵循 Chris 的建议,自己将有问题的行包装到 try...catch block 中并手动打印任何异常的堆栈跟踪来找出答案。

关于Java奇怪的行为: Program cancels but no Exception is thrown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20420367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com