C言語から入ったひとによる Java あるある。
変数スコープは狭くしてくれと言っても、「動けば良いじゃん!」と言い張るC言ger。
小さなゴミコードが集まって、そしてバグが引き起こされる・・・・・・。
最終的なバグは、MyExceptionB のときに、ログ出力が出ないこと。
※ 変数名、メソッド名、例外クラス名などは、差し障りのない名称にしています。
void method() {
int executeResult = 0;
String message = "";
try {
// ...
executeResult = execute();
// ...
} catch (MyExceptionA eA) {
message = exceptionFormatter(eA);
commonLogger.writeLog(message);
} catch (MyExceptionB eB) {
exceptionFormatter(eB);
commonLogger.writeLog(message);
}
}
C言語だと { ... } の間は1つのスコープになるんで割と便利。制御構造をまたがない限りはどこでも置けます。変数宣言は必ず関数の最初って人には向きませんが。
という結論に至る経緯が良くわからんのですが。 voidメソッド内に変数executeResult があるのも違和感ありあり過ぎるし、コード例が悪過ぎませんかね。