为什么Try/Catch块会创建新的变量作用域?

7 浏览
0 Comments

为什么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的工作原理。

0