Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.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 要使用哪个异常类?_Java_Exception - Fatal编程技术网

Java 要使用哪个异常类?

Java 要使用哪个异常类?,java,exception,Java,Exception,我已经用Java编写了一个音乐播放器,但是在查找要抛出的异常时遇到了问题。基本上,我希望异常处理程序抛出的是,如果播放列表中存储的歌曲的文件名被更改,或者如果该文件被删除,那么它自然不会播放。我起初认为这是我需要的一个IOException,但它给了我一个错误的说法 异常IOException从不在相应的try语句体中抛出 现在,我明白了这意味着我使用了错误的异常类,所以我尝试编写自己的扩展异常的类,但当我尝试编译时,它会给我相同的错误。有人能看出我做错了什么吗 这就是目前的方法: public

我已经用Java编写了一个音乐播放器,但是在查找要抛出的异常时遇到了问题。基本上,我希望异常处理程序抛出的是,如果播放列表中存储的歌曲的文件名被更改,或者如果该文件被删除,那么它自然不会播放。我起初认为这是我需要的一个IOException,但它给了我一个错误的说法

异常IOException从不在相应的try语句体中抛出

现在,我明白了这意味着我使用了错误的异常类,所以我尝试编写自己的扩展异常的类,但当我尝试编译时,它会给我相同的错误。有人能看出我做错了什么吗

这就是目前的方法:

public void play() throws NoMatchException
    {
        if(player != null) {
            player.stop();
        }      

        try{
            int fileToPlay = tracklist.getSelectedIndex();
            String filename = organizer.getFile(fileToPlay);
            Media song = new Media(filename);
            player = new MediaPlayer(song);
            setVolume(currentVolume);
            player.play();

            player.setOnEndOfMedia(new Runnable() {
                @Override public void run() { next(); }
            });   
        }
        catch (NoMatchException e){
            //Some exception
        }              
    }

这个代码毫无意义

您的
catch
块为空且不执行任何操作。你的方法说它抛出一个
NoMatchException
。你为什么不消除try/catch,让它这样做呢

当您有可行的恢复策略时,您会捕获异常。无所事事不是一种策略。就让它冒泡起来,让打电话的人来处理吧


如果您确实有一个可行的恢复策略,请在catch块中实现它,并从方法签名中删除throws子句。一个或另一个,但不是两个。

当您不确定需要捕获什么异常时,请转到相应方法的文档。事实证明,会抛出-这是您需要捕获的异常。向下滚动到“throws”部分,查找不扩展
RuntimeException
的异常(运行时异常通常表示编程错误;很少需要捕获)


当您决定在程序的特定级别捕获异常时,请查看您的代码是否可以对其执行有意义的操作。除非您知道何时捕获异常,否则您不应该捕获异常。

它是空的,因为在知道如何使它工作之前,我都懒得写它。基本上,我只想打印一个通知给用户,告知她试图播放的文件有问题。