Почему блок Try / Catch создает новую область видимости переменной?
Например:
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
выброшены.