Por que não consigo lançar exceções de um membro com expressão corporal?
O uso de membros com expressão corporal permite definir o corpo de um método ou propriedade como uma expressão única sem uma palavra-chave de retorno (caso retorne alguma coisa).
Por exemplo, transforma esses
int Method1()
{
return 5;
}
void Method2()
{
Console.WriteLine();
}
para estes
int Method1() => 5;
void Method2() => Console.WriteLine();
Uma diferença entra em jogo quando você lança uma exceção do corpo:
void Method3()
{
throw new Exception();
}
No entanto, o seguinte não será compilado:
void Method3() => throw new Exception();
com as seguintes mensagens:
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ê?