Почему блок 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.

44
задан trevor-e 25 July 2012 в 17:09
поделиться