JLSはかなりよく、これを説明する:
ブロック内のローカル変数宣言(14.4)の範囲で始まる、宣言が出現するブロックの残りの部分でありますそれ自身のイニシャライザを含み、ローカル変数宣言ステートメントの右側の宣言子を追加します。 jls 6.3
のtry-catchブロックは次のように定義されます
TryStatement: はjls 14.20からブロックCatchesopt最後に TryWithResourcesStatement
を試すブロックキャッチしてみてください。 tload
以来
だからあなたのコード内の
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;
}
try-block
の終わりまでにのみ表示され、リターン文はどんな意味がありません。代わりに、次のようなものを試すことができます:
Track tLoad = null;
try {
tLoad = TrackReader.read(fileName);
} catch (IOException | FormatException ex) {
Logger.getLogger(RailwayModel.class.getName()).log(Level.SEVERE, null, ex);
}
return tLoad;
}