首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能破例听筒

不能破例听筒
EN

Stack Overflow用户
提问于 2019-01-11 09:44:26
回答 1查看 235关注 0票数 3

我最近开始使用JavaFX,我遇到了一个音频和异常处理方面的问题。

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

异常引发的

代码语言:javascript
复制
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。但我的代码有问题。

实现代码

代码语言:javascript
复制
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");
}

进口部门

代码语言:javascript
复制
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

你知道怎么抓住它吗?

EN

回答 1

Stack Overflow用户

发布于 2019-01-11 10:49:17

您无法捕获此异常,因为它被抛出在另一个线程上,该线程处理媒体工作流。

不幸的是,Java并没有提供任何简单的方法来捕获这样的异常。

您很可能会得到异常,因为JavaFX找不到您提供的文件。首先尝试使用一个URL来查看它是否是真的:

代码语言:javascript
复制
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)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54143914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档