Java 我的音乐正在重新播放,但我正在阻止它,如何以及为什么?
这是我的主类代码Java 我的音乐正在重新播放,但我正在阻止它,如何以及为什么?,java,Java,这是我的主类代码 static boolean music = true; 这是我框架中的代码 import java.awt.Color; import java.io.InputStream; import sun.audio.AudioPlayer; import sun.audio.AudioStream; public class frmMainMenu extends javax.swing.JFrame { boolean Music = ProjetFinal.music
static boolean music = true;
这是我框架中的代码
import java.awt.Color;
import java.io.InputStream;
import sun.audio.AudioPlayer;
import sun.audio.AudioStream;
public class frmMainMenu extends javax.swing.JFrame {
boolean Music = ProjetFinal.music;
public frmMainMenu() {
initComponents();
while (Music == true) {
try {
InputStream test = getClass().getClassLoader().getResourceAsStream("musics/menu.wav");
AudioStream Audio = new AudioStream(test);
AudioPlayer.player.start(Audio);
Music = false;
} catch (Exception e){}
System.err.println("Exception occurred: ");
Music = false;
}
}
它在我的控制台中显示“异常发生:”但我如何修复它,我的意思是,我不明白错误是什么。它发生在我的程序/框架启动时。您的代码正在抛出一个异常,您正在盲目捕获而不是记录该异常。之后,它会重新启动,因为它还没有机会将音乐设置为false 这只是为什么永远不应该有空的
catch
块的众多原因之一
catch (final Exception e)
{
System.err.println("Exception occurred: " + e.getMessage());
JOptionPane.showMessageDialog(null, e.getMessage());
}
finally { Music = false; }
使用
e.printStackTrace()代码>在我的区块应该可以吗?如果是这样,控制台中不会弹出任何内容;音乐=假;}
没有e
,因为它给我一个错误,在控制台中打印出该行。重点不在日志记录中,而是在发生异常时执行适当的操作。在您的情况下,记录或不记录可能是有意义的。但看起来将音乐设置为false肯定是有意义的。所以。。。我输入了这个,它仍然不起作用,但是没有弹出JOption窗格,它仍然做同样的事情,重新播放音乐catch(最终异常e){System.err.println(“发生异常:+e.getMessage());JOptionPane.showMessageDialog(null,e.getMessage());}最终{Music=false;}
在try
块中的每行代码之间添加日志语句,查看执行了什么,或者附加一个调试器并逐行遍历代码以查看出了什么问题。尝试在while循环之后添加System.out.println()。我猜你会在音乐停止播放之前很久看到println(),因为音频是在不同的线程中播放的。