我最近开始使用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.这是我的全部代码https://github.com/yamakataoka/Pomodoro/blob/master/Pomodoro.java
你知道怎么抓住它吗?
发布于 2019-01-11 10:49:17
您无法捕获此异常,因为它被抛出在另一个线程上,该线程处理媒体工作流。
不幸的是,Java并没有提供任何简单的方法来捕获这样的异常。
您很可能会得到异常,因为JavaFX找不到您提供的文件。首先尝试使用一个URL来查看它是否是真的:
AudioClip clickSound = new AudioClip("https://github.com/sgrinev/mastering-javafx-9-10-book/raw/master/resources/mouse-click.wav");如果有效,请检查下一个问题的答案,有关JavaFX:How to target a file (a path to it) in Java/JavaFX中正确的资源声明
P.S.:如果你真的致力于捕捉这个异常,你可以挖掘下一个API:https://docs.oracle.com/javase/6/docs/api/java/lang/Thread.html#setDefaultUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler)。
https://stackoverflow.com/questions/54143914
复制相似问题