Perché throw outerE;
genera un errore di compilazione? So che throw e;
non dovrebbe generare un errore di compilazione a causa del precise rethrow feature.Perché una di queste eccezioni riconfigurate crea un errore del compilatore?
Sono la stessa Exception
oggetto, ma uno è scoped all'interno del blocco catch
è ambito unico e uno al di fuori del blocco try-catch.
Non dovrebbe nessuno di questi generare un errore del compilatore? O, almeno, si comportano allo stesso modo?
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
}
}
Sto usando Java 1.8.0_51. (Precise rethrow è introdotto in Java 7)