¿Por qué no puedo lanzar excepciones de un miembro con cuerpo de expresión?
El uso de miembros con cuerpo de expresión le permite definir el cuerpo de un método o propiedad como una sola expresión sin una palabra clave de retorno (en caso de que devuelva algo).
Por ejemplo, convierte estos
int Method1()
{
return 5;
}
void Method2()
{
Console.WriteLine();
}
en estos
int Method1() => 5;
void Method2() => Console.WriteLine();
Una diferencia entra en juego cuando lanzas una excepción desde el cuerpo:
void Method3()
{
throw new Exception();
}
Sin embargo, lo siguiente no se compilará:
void Method3() => throw new Exception();
con los siguientes mensajes:
Warning The member 'Program.Exception()' does not hide an inherited member. The new keyword is not required.
Error 'Program.Exception()' must declare a body because it is not marked abstract, extern, or partial
Error ; expected
Error Invalid token 'throw' in class, struct, or interface member declaration
Error Method must have a return type
Error Invalid expression term 'throw'
¿Por qué?