Dlaczego throw outerE;
generuje błąd kompilacji? Wiem, że throw e;
nie powinny generować błąd kompilatora powodu precise rethrow feature.Dlaczego którekolwiek z tych odrzuconych wyjątków powodują błąd kompilatora?
to ta sama Exception
obiekt, ale jedno jest zawężona wewnątrz bloku catch
tylko jeden i jest określania zakresów zewnątrz bloku try-catch.
Czy żaden z nich nie powinien generować błędu kompilatora? A przynajmniej obie zachowują się w ten sam sposób?
static void preciseRethrowTest()
{
Exception outerE;
try
{
}
catch (Exception e)
{
outerE = e;
// Compilation error here. Unhandled exception type Exception
// throw outerE;
throw e; // No compiler error
}
}
Używam Java 1.8.0_51. (Pretse rethrow został wprowadzony w języku Java 7)