Die JLS erklärt dies ziemlich gut:
Der Gültigkeitsbereich einer lokalen Variablendeklaration in einem Block (§14.4) ist der Rest des Blocks, in dem die Erklärung erscheint, beginnend mit einen eigenen Initialisierer und weitere Deklaratoren rechts in der lokalen Variablendeklarationsanweisung. jls 6.3
A try-catch-Block ist definiert als:
TryStatement: versuchen Block fängt try-Block Catchesopt Schließlich TryWithResourcesStatement
von jls 14.20.
Also in Ihrem Code
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;
}
Seit tload
ist nur sichtbar, bis das Ende der try-block
, die Rückkehr-Aussage keinen Sinn macht. Stattdessen könnten Sie etwas wie dieses versuchen:
Track tLoad = null;
try {
tLoad = TrackReader.read(fileName);
} catch (IOException | FormatException ex) {
Logger.getLogger(RailwayModel.class.getName()).log(Level.SEVERE, null, ex);
}
return tLoad;
}