Java 无法访问在try/catch语句中初始化的变量
我正在为我的游戏制作一个完善的课程,在不断尝试之后,我似乎无法摆脱NullPointerException。这是因为我无法访问try/catch语句中的变量 代码如下:Java 无法访问在try/catch语句中初始化的变量,java,nullpointerexception,try-catch,Java,Nullpointerexception,Try Catch,我正在为我的游戏制作一个完善的课程,在不断尝试之后,我似乎无法摆脱NullPointerException。这是因为我无法访问try/catch语句中的变量 代码如下: package util; import java.applet.*; import java.net.URL; public class Sound { private AudioClip audio; private URL file; public Sound(String srcfile)
package util;
import java.applet.*;
import java.net.URL;
public class Sound
{
private AudioClip audio;
private URL file;
public Sound(String srcfile)
{
try
{
this.file = new URL(srcfile);
}
catch(Exception e){}
this.audio = Applet.newAudioClip(file);
}
public void Play()
{
this.audio.play();
}
public void Loop()
{
this.audio.loop();
}
public void Stop()
{
this.audio.stop();
}
public AudioClip getAudio()
{
return audio;
}
public void setAudio(AudioClip audio)
{
this.audio = audio;
}
}
以下是错误(不再获取):
我打电话来
Play();
但是什么也没发生
下面是我调用该方法的方式:
Sound snd = new Sound("res/dev/sound.wav");
snd.Play();
任何帮助都将不胜感激。从类的设计方式来看,不需要将
文件
变量存在于构造函数之外。像这样的东西可能很有用:
public Sound(String srcfile) {
try {
this.audio = Applet.newAudioClip(new URL(srcfile));
}
catch(Exception e){
//at least print the stack trace
e.printStackTrace();
//do some proper exception handling that makes sense for you app!
}
}
永远不要这样做
catch(异常e){}
。至少记录一下。为什么不把this.audio=Applet.newAudioClip(文件)放进去呢
在try
catch(Exception e){e.printStackTrace();}
中,“发生这种情况是因为我无法访问try/catch语句中的变量。”这实际上毫无疑问是在发生的,因为新URL(srcfile)
正在引发一个异常,而您的代码正在处理该异常。像其他人建议的那样打印堆栈跟踪,然后我们可以帮助解决实际问题。
Sound snd = new Sound("res/dev/sound.wav");
snd.Play();
public Sound(String srcfile) {
try {
this.audio = Applet.newAudioClip(new URL(srcfile));
}
catch(Exception e){
//at least print the stack trace
e.printStackTrace();
//do some proper exception handling that makes sense for you app!
}
}