I am using custom errors (`web.config`) to send unhandled exceptions to my `ErrorController`.

In my main Controller I throw an exception, catch it in a `catch` block and set the `TempData` to have some user-friendly message. I then `throw` which is then sent to the `ErrorController`.

When I check the `TempData` here, it is empty (as is the `Session` but it would be, wouldn't it?).

I am sure it is not meant to be empty, and this is the right way of sending data between controllers... but it is not working! Am I mistaken in my understanding?

`HomeController`:

```
catch (Exception ex)
{
    TempData["MsgForUser"] = "useful message to show";
    // Do some logging...

    throw;
}

```

`ErrorController`:

```
public ActionResult DisplayError(int id)
{
    ViewBag.MsgForUser = TempData["MsgForUser"];
    return View();
}

```

`Web.config`:

```
<system.web>
  <customErrors mode="On" defaultRedirect="~/ErrorPage/DisplayError">
    <error redirect="~/Error/DisplayError/403" statusCode="403" />
    <error redirect="~/Error/DisplayError/404" statusCode="404" />
    <error redirect="~/Error/DisplayError/500" statusCode="500" />
  </customErrors>

```