Dlaczego blok Try / Catch tworzy nowy zakres zmiennych?

Na przykład:

try
{
    SomeObject someObject = new SomeObject();
    someObject.dangerousMethod();
}
catch(Exception e)
{
}
someObject.anotherMethod(); //can't access someObject!

Ale możesz to zadeklarować przedtry/catch blok, a następnie działa dobrze:

SomeObject someObject;
try
{
    someObject = new SomeObject();
    someObject.dangerousMethod();
}
catch(Exception e)
{
}
someObject.anotherMethod(); //works fine

Zastanawiam się tylko nad powodem tego projektu. Dlaczego obiekty są tworzone wtry/catch blok nie mieści się w zakresie z resztą metody? Może nie rozumiem głęboko, jaktry/catch działa oprócz oglądaniaExceptions rzucony.

questionAnswers(5)

yourAnswerToTheQuestion