public void OnException(ExceptionContext filterContext)
        {
            filterContext.LogException(filterContext.Exception);

            if (filterContext.HttpContext.Request.IsAjaxRequest())
            {
                string message = "Ocorreu um erro inesperado. Contate seu administrador de sistema.";

                if (filterContext.HttpContext.IsDebuggingEnabled)
                {
                    message += string.Format("<br/><br/>{0}", filterContext.Exception.Message);
                }

                filterContext.Result = new JsonResult
                {
                    Data = new { @success = false, @title = "Erro", @message = message },
                    JsonRequestBehavior = JsonRequestBehavior.AllowGet
                };
            }
            else
            {
                string controllerName = (string)filterContext.RouteData.Values["controller"];
                string actionName     = (string)filterContext.RouteData.Values["action"];

                filterContext.Result = new ViewResult
                {
                    ViewName = "Error",
                    ViewData = new ViewDataDictionary <HandleErrorInfo>(new HandleErrorInfo(filterContext.Exception, controllerName, actionName)),
                };
            }

            filterContext.ExceptionHandled = true;
            filterContext.HttpContext.Response.Clear();
            filterContext.HttpContext.Response.StatusCode             = (int)HttpStatusCode.InternalServerError;
            filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
        }