Exemple #1
0
        /// <summary>
        /// Convert an exception thrown by an RPC into an error message.
        /// </summary>
        internal Error HandleException(System.Exception exn)
        {
            if (exn is RPCException && exn.InnerException != null)
            {
                exn = exn.InnerException;
            }
            var message       = exn.Message;
            var verboseErrors = Configuration.Instance.VerboseErrors;
            var stackTrace    = verboseErrors ? exn.StackTrace : string.Empty;

            if (Logger.ShouldLog(Logger.Severity.Debug))
            {
                Logger.WriteLine(message, Logger.Severity.Debug);
                if (verboseErrors)
                {
                    Logger.WriteLine(stackTrace, Logger.Severity.Debug);
                }
            }
            var   mappedType = GetMappedExceptionType(exn.GetType());
            var   type       = mappedType ?? exn.GetType();
            Error error;

            if (Reflection.HasAttribute <KRPCExceptionAttribute>(type))
            {
                error = new Error(TypeUtils.GetExceptionServiceName(type), type.Name, message, stackTrace);
            }
            else
            {
                error = new Error(message, stackTrace);
            }
            return(error);
        }