【发布时间】:2012-07-24 04:43:30
【问题描述】:
例如:
try
{
SomeObject someObject = new SomeObject();
someObject.dangerousMethod();
}
catch(Exception e)
{
}
someObject.anotherMethod(); //can't access someObject!
但是你可以在 try/catch 块之前声明它,然后它就可以正常工作了:
SomeObject someObject;
try
{
someObject = new SomeObject();
someObject.dangerousMethod();
}
catch(Exception e)
{
}
someObject.anotherMethod(); //works fine
我只是想知道这样做的设计原因。为什么在 try/catch 块内创建的对象不在方法其余部分的范围内?也许我并没有深入了解try/catch 的工作原理,除了只关注Exceptions 抛出。
【问题讨论】:
-
Java 中的每个块都定义了一个新的范围。不只是尝试块。不遵循一般规则将是非常不一致的。