How about an exception filter?
[HandleError(Exception = typeof(UnauthorizedAccessException), View = "MyErrorPage")]
public class MyController { }
I can't test this at the moment, if this doesn't work let me know and I'll create a custom filter for this purpose.
UPDATE
Since you've created your own custom attribute, you would pass information to your view from your attribute via TempData
:
public void OnAuthorization(AuthorizationContext filterContext)
{
//Note you could assign a complex type here, let's just assign a string
filterContext.Controller.TempData["ErrorDetails"] = "Here are my details";
// Redirect to an "Unauthorized" controller
filterContext.HttpContext.Response.Redirect(urlHelper.Action("Index", "Unauthorized"), true);