Java 要使用哪个异常类?
我已经用Java编写了一个音乐播放器,但是在查找要抛出的异常时遇到了问题。基本上,我希望异常处理程序抛出的是,如果播放列表中存储的歌曲的文件名被更改,或者如果该文件被删除,那么它自然不会播放。我起初认为这是我需要的一个IOException,但它给了我一个错误的说法 异常IOException从不在相应的try语句体中抛出 现在,我明白了这意味着我使用了错误的异常类,所以我尝试编写自己的扩展异常的类,但当我尝试编译时,它会给我相同的错误。有人能看出我做错了什么吗 这就是目前的方法:Java 要使用哪个异常类?,java,exception,Java,Exception,我已经用Java编写了一个音乐播放器,但是在查找要抛出的异常时遇到了问题。基本上,我希望异常处理程序抛出的是,如果播放列表中存储的歌曲的文件名被更改,或者如果该文件被删除,那么它自然不会播放。我起初认为这是我需要的一个IOException,但它给了我一个错误的说法 异常IOException从不在相应的try语句体中抛出 现在,我明白了这意味着我使用了错误的异常类,所以我尝试编写自己的扩展异常的类,但当我尝试编译时,它会给我相同的错误。有人能看出我做错了什么吗 这就是目前的方法: public
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
的异常(运行时异常通常表示编程错误;很少需要捕获)
当您决定在程序的特定级别捕获异常时,请查看您的代码是否可以对其执行有意义的操作。除非您知道何时捕获异常,否则您不应该捕获异常。它是空的,因为在知道如何使它工作之前,我都懒得写它。基本上,我只想打印一个通知给用户,告知她试图播放的文件有问题。