In C# 7 it is possible to raise an exception inside an expression:
int n = list != null ? list.Count : throw new NullReferenceException("list");
In this position, the throw expression can substitute an expression of any type.
Now I want to define a function that executes some action before raising an exception:
??? DoSomethingAndThrowException(Exception e)
{
MessageBox.Show("Prepare for an exception!");
throw e;
}
What would be the return type of such function, so that it can be used in the same places as the original throw expression:
int n = list != null ? list.Count : DoSomethingAndThrowException(new NullReferenceException("list"));
There's the option to declare it as a generic method:
T DoSomethingAndThrowException<T>(Exception e) {...}
But this seems cumbersome, as the generic type doesn't occur anywhere in the function body. Is this the only way to do it, or is there some type I don't know of, and which is assignable to any type (an "anti-object" type, so to speak)?