よくよく考えると、Javaでよく見るtryの前の不格好な変数宣言は
catchとfinallyとtryのブロックが別れてるせいじゃね?
少なくとも、ブロックが別れていなければもっと近くで宣言できるはずだし
変数のスコープをtryからfinallyの間に閉じ込めらるはずだ
本質的には同じブロックになった方がいいんじゃないか?