はい、tryの範囲はそれに制限されています。実際にはスコープで始まる{で終わる}、したがってこれはまた、あなたの問題を解決するには、サブスコープ
void foo() {
{
Ini myIni = new Ini(new FileReader(myFile));
}
myIni.get("toto"); //error here, since myIni is out of scope
}
を作成し、ヌルでmyIni
を初期化し、試してみるが失敗した場合、myIni.get("toto");
がもたらすことを承知しているであろうNullPointerExceptionで
だから、それを考慮に入れるか、catchブロックから別の例外をスローする必要があります。ヌルのため
チェック:
Ini myIni = null;
try {
myIni = new Ini(new FileReader(myFile));
} catch (IOException e) {
e.printStackTrace();
}
if(myIni != null) {
myIni.get("toto");
//access the rest of myIni
} else {
//handle initialization error
}
スロー例外:
Ini myIni = null;
try {
myIni = new Ini(new FileReader(myFile));
} catch (IOException e) {
e.printStackTrace();
throw new MyCustomInitFailedException(); //throw any exception that might be appropriate, possibly wrapping e
}
myIni.get("toto");
は、すでに述べたようにそれが可能かつ適切だ場合にもmyIni
のあなたの全体の使用量の周りにtryブロックを置くことができ@khachikによって提案されました。どのソリューションを選択するかは、他の要件とデザインによって異なります。
'e.printStackTrace()'をしないでください。ちょうど 'スローe'。 – BalusC