Java Can';t捕获有关音频剪辑的异常
我最近开始使用JavaFX,我在音频剪辑和异常处理方面遇到了一些问题 当我在一台音频系统有问题的计算机上尝试时,抛出了异常 引发异常:Java Can';t捕获有关音频剪辑的异常,java,exception,audio,javafx,exception-handling,Java,Exception,Audio,Javafx,Exception Handling,我最近开始使用JavaFX,我在音频剪辑和异常处理方面遇到了一些问题 当我在一台音频系统有问题的计算机上尝试时,抛出了异常 引发异常: Exception in thread "Thread-4" com.sun.media.jfxmedia.MediaException: Could not create player! at javafx.media/com.sun.media.jfxmediaimpl.NativeMediaManager.getPlayer(NativeMedia
Exception in thread "Thread-4" com.sun.media.jfxmedia.MediaException: Could not create player!
at javafx.media/com.sun.media.jfxmediaimpl.NativeMediaManager.getPlayer(NativeMediaManager.java:274)
at javafx.media/com.sun.media.jfxmedia.MediaManager.getPlayer(MediaManager.java:118)
at javafx.media/com.sun.media.jfxmediaimpl.NativeMediaAudioClipPlayer.play(NativeMediaAudioClipPlayer.java:319)
at javafx.media/com.sun.media.jfxmediaimpl.NativeMediaAudioClipPlayer.clipScheduler(NativeMediaAudioClipPlayer.java:112)
at javafx.media/com.sun.media.jfxmediaimpl.NativeMediaAudioClipPlayer.access$000(NativeMediaAudioClipPlayer.java:47)
at javafx.media/com.sun.media.jfxmediaimpl.NativeMediaAudioClipPlayer$Enthreaderator.lambda$static$0(NativeMediaAudioClipPlayer.java:85)
at java.base/java.lang.Thread.run(Thread.java:844)
这是我的实现片段
此外,我还尝试了Throwable
。但我的代码有点问题
实施代码
try{
audio = new AudioClip(new File("Ding.mp3").toURI().toString());
audio.play();
Thread.sleep(1000);
}catch(Exception e){
System.out.println("can't play audio");
}
导入部分
import java.io.File;
import javafx.application.*;
import javafx.scene.*;
import javafx.scene.layout.*;
import javafx.scene.control.*;
import javafx.scene.paint.*;
import javafx.scene.image.*;
import javafx.scene.effect.*;
import javafx.scene.text.*;
import javafx.scene.input.*;
import javafx.scene.canvas.*;
import javafx.scene.shape.*;
import javafx.scene.media.*;
import javafx.scene.media.AudioClip;
import javafx.stage.*;
import javafx.event.*;
import javafx.geometry.*;
import javafx.collections.*;
import java.util.*;
import java.net.MalformedURLException;
p.s这是我的全部代码
您知道如何捕获它吗?您无法捕获此异常,因为它被抛出到另一个处理媒体工作流的线程上 不幸的是,Java没有提供捕获此类异常的任何简单方法 您很可能会遇到异常,因为JavaFX找不到您提供的文件。首先尝试使用URL查看是否正确:
AudioClip clickSound = new AudioClip("https://github.com/sgrinev/mastering-javafx-9-10-book/raw/master/resources/mouse-click.wav");
如果可行,请检查下一个问题的答案,了解JavaFX中正确的资源声明:
附言:如果你真的致力于捕捉这个异常,你可以深入到下一个API:谢谢你的回答。你提供的代码对我不起作用。我有相同的错误代码。@Yama,在这种情况下,它看起来像是操作系统问题--您使用哪一个?My OS:Windows 10 Education(版本:1803)Java:jdk-10.0.2检测音频系统是否可用也就足够了。但是这些函数(canPlayProtocol和canPlayContentType)似乎不是我想要的。下面是如何捕获由其他线程引发的异常<代码>线程.UncaughtExceptionHandler对我不起作用。