예제 #1
0
        /// <summary>
        /// Manejar excepcion
        /// </summary>
        /// <param name="exception"></param>
        /// <returns></returns>
        public HandleExceptionResult HandleException(Exception exception)
        {
            try
            {
                var result = new HandleExceptionResult();
                result.TypeResult = TypeResult.Error;
                result.Message    = Mensajes.ErrorGenerico;

                //Aplicar tuberia de filtros para el tratamiento de errores, basado en la configuraciones
                foreach (var filter in _filterHanderException)
                {
                    result = filter.HandleException(exception, result);
                }

                _mensaje       = result.Message;
                _typeResultado = result.TypeResult;

                //Registrar la excepcion en log
                log.Error("Excepcion:", exception);


                return(result);
            }
            catch (Exception ex)
            {
                if (log != null)
                {
                    log.Error("Excepcion en ManejadorExcepciones - Exception Original :", exception);

                    //Registrar la excepcion en NLog
                    log.Error("Excepcion en ManejadorExcepciones :", ex);
                }
            }
            return(null);
        }
예제 #2
0
        public HandleExceptionResult HandleException(Exception originalException, HandleExceptionResult result)
        {
            //wrapper Elmah
            ElmahExtension.LogToElmah(originalException);

            return(result);
        }
예제 #3
0
        public HandleExceptionResult HandleException(Exception originalException, HandleExceptionResult result)
        {
            //TODO: JSA, APLICAR CADENA DE RESPONSABILIDAD
            Exception _innerException = originalException;


            if (_innerException.GetType() == typeof(GenericException))
            {
                var genericException = _innerException as GenericException;
                result.TypeResult = TypeResult.Information;
                result.Message    = genericException.FriendlyMessage;
                return(result);
            }


            if (_innerException.GetType() == typeof(AbpValidationException))
            {
                var genericException = _innerException as AbpValidationException;
                result.TypeResult = TypeResult.Information;

                var msg = string.Join("; ", genericException.ValidationErrors
                                      .Select(x => x.ErrorMessage));

                result.Message = msg;
                return(result);
            }


            if (_innerException.GetType() == typeof(ConcurrenciaExcepcion))
            {
                result.TypeResult = TypeResult.Error;
                result.Message    = Mensajes.ErrorConcurrencia;
                return(result);
            }

            //TODO: Colocar DbEntityValidationException, crea dependencia de EntityFramework
            if (_innerException.GetType() == typeof(DbEntityValidationException))
            {
                var dbEntityValidationException = _innerException as DbEntityValidationException;

                var fullErrorMessage = dbEntityValidationException.DbEntityValidationExceptionToString();

                result.TypeResult = TypeResult.Error;
                result.Message    = fullErrorMessage;
                return(result);
            }

            //TODO: Mensajes de recursos en el framework
            //Default
            result.TypeResult = TypeResult.Error;
            result.Message    = Mensajes.ErrorGenerico;
            return(result);
        }