Java 试着抓住出错的机会
我正在创建另一个方法来调用另一个类的方法。在尝试捕获之后,netbeans一直告诉我“找不到符号:变量tLoad”,我做错了什么Java 试着抓住出错的机会,java,try-catch,Java,Try Catch,我正在创建另一个方法来调用另一个类的方法。在尝试捕获之后,netbeans一直告诉我“找不到符号:变量tLoad”,我做错了什么 public Track trackLoader(String fileName) { try { Track tLoad = TrackReader.read(fileName); } catch (IOException | FormatException ex) { Logger.getLogger(Rail
public Track trackLoader(String fileName) {
try {
Track tLoad = TrackReader.read(fileName);
} catch (IOException | FormatException ex) {
Logger.getLogger(RailwayModel.class.getName()).log(Level.SEVERE, null, ex);
}
return tLoad;
}
您必须在
try
-块之外声明tLoad
,才能在它之外使用它
public Track trackLoader(String fileName) {
Track tLoad = null;
try {
tLoad = TrackReader.read(fileName);
} catch (IOException | FormatException ex) {
Logger.getLogger(RailwayModel.class.getName()).log(Level.SEVERE, null, ex);
}
return tLoad;
}
您的变量
tLoad
仅存在于try
块中,甚至不在catch中,而且绝对不在catch之后。固定的:
public Track trackLoader(String fileName) {
Track tLoad = null;
try {
tLoad = TrackReader.read(fileName);
} catch (IOException | FormatException ex) {
Logger.getLogger(RailwayModel.class.getName()).log(Level.SEVERE, null, ex);
}
return tLoad;
}
jls很好地解释了这一点: 块(§14.4)中局部变量声明的范围是声明出现的块的其余部分,从其自身的初始值设定项开始,并包括局部变量声明语句右侧的任何其他声明符 try-catch块定义为: 幽会: 试试拦网 最后试着用方块捕捉 尝试使用资源陈述 从 所以在你的代码中
try {
Track tLoad = TrackReader.read(fileName); //<-- this variable
//is only visible until here
} catch (IOException | FormatException ex) {
Logger.getLogger(RailwayModel.class.getName()).log(Level.SEVERE, null, ex);
}
return tLoad;
}
Track tLoad = null;
try {
tLoad = TrackReader.read(fileName);
} catch (IOException | FormatException ex) {
Logger.getLogger(RailwayModel.class.getName()).log(Level.SEVERE, null, ex);
}
return tLoad;
}