What is the point of having 4 functions...? Isn't this one size fits all?

```D
CommonType!(T1,T2) ifThrown(E = Throwable, T1, T2)(lazy scope T1 expression, lazy scope T2 errorHandler)
{
    static assert(!is(CommonType!(T1, T2) == void),
            "The error handler's return value("~T2.stringof~") does not have a common type with the expression("~T1.stringof~").");

    try
    {
        return expression();
    }
    catch(E)
    {
        return errorHandler();
    }
}
```