Erro personalizado do asp.net MVC Handling Application_Error Global.asax?

Eu tenho alguns códigos básicos para determinar erros no meu aplicativo MVC. Atualmente no meu projeto eu tenho um controlador chamadoError com métodos de açãoHTTPError404(), HTTPError500()eGeneral(). Todos aceitam um parâmetro de stringerror. Usando ou modificando o código abaixo. Qual é a melhor maneira de passar os dados para o controlador Error para processamento? Eu gostaria de ter uma solução robusta quanto possível.

protected void Application_Error(object sender, EventArgs e)
{
    Exception exception = Server.GetLastError();
    Response.Clear();

    HttpException httpException = exception as HttpException;
    if (httpException != null)
    {
        RouteData routeData = new RouteData();
        routeData.Values.Add("controller", "Error");
        switch (httpException.GetHttpCode())
        {
            case 404:
                // page not found
                routeData.Values.Add("action", "HttpError404");
                break;
            case 500:
                // server error
                routeData.Values.Add("action", "HttpError500");
                break;
            default:
                routeData.Values.Add("action", "General");
                break;
        }
        routeData.Values.Add("error", exception);
        // clear error on server
        Server.ClearError();

        // at this point how to properly pass route data to error controller?
    }
}

questionAnswers(10)

yourAnswerToTheQuestion