为什么Try/Catch块会创建新的变量作用域?
- 论坛
- 为什么Try/Catch块会创建新的变量作用域?
7 浏览
为什么Try/Catch块会创建新的变量作用域?
例如:
try { SomeObject someObject = new SomeObject(); someObject.dangerousMethod(); } catch(Exception e) { } someObject.anotherMethod(); //无法访问someObject!
但是你可以在try/catch
块之前声明它,这样它就可以正常工作:
SomeObject someObject; try { someObject = new SomeObject(); someObject.dangerousMethod(); } catch(Exception e) { } someObject.anotherMethod(); //可以正常工作
我只是想知道这背后的设计原因。为什么在try/catch
块中创建的对象不在方法的其余部分范围内?除了捕获抛出的Exception
之外,也许我没有深入理解try/catch
的工作原理。