Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.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 Can';t捕获有关音频剪辑的异常_Java_Exception_Audio_Javafx_Exception Handling - Fatal编程技术网

Java Can';t捕获有关音频剪辑的异常

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

我最近开始使用JavaFX,我在音频剪辑和异常处理方面遇到了一些问题

当我在一台音频系统有问题的计算机上尝试时,抛出了异常

引发异常

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对我不起作用。