public static DtoException ObterInfoExcecao(Exception ex)
        {
            var info = new DtoException();

            try
            {
                var trace = new StackTrace(ex, true);
                StackFrame stackFrame = trace.GetFrame(0);

                for (int i = 0; i < trace.FrameCount; i++)
                {
                    var f = trace.GetFrame(i);
                    if (f.GetFileName() != null)
                    {
                        stackFrame = f;
                        break;
                    }
                }

                if (trace.FrameCount == 0)
                {
                    return info;
                }

                if (stackFrame.GetFileName() == null)
                {
                    info.nomeClasse = ex.TargetSite.ReflectedType.Name;
                    info.nomeMetodo = ex.TargetSite.Name;
                    info.mensagem = ex.Message;
                    info.stackTrace = ex.StackTrace;
                }
                else
                {
                    // Collect data where exception occured
                    string[] splitFile = stackFrame.GetFileName().Split('\\');

                    info.nomeClasse = splitFile.Length > 0 ? splitFile[splitFile.Length - 1].Split('.').First() : string.Empty;
                    info.nomeMetodo = stackFrame.GetMethod().Name;
                    info.mensagem = ex.Message;
                    info.numLinha = stackFrame.GetFileLineNumber();
                    info.stackTrace = ex.StackTrace;
                }
            }
            catch
            {

            }

            return info;
        }
        public static DtoException ObterInfoExcecao(Exception ex)
        {
            var info = new DtoException();

            try
            {
                var        trace      = new StackTrace(ex, true);
                StackFrame stackFrame = trace.GetFrame(0);

                for (int i = 0; i < trace.FrameCount; i++)
                {
                    var f = trace.GetFrame(i);
                    if (f.GetFileName() != null)
                    {
                        stackFrame = f;
                        break;
                    }
                }

                if (trace.FrameCount == 0)
                {
                    return(info);
                }

                if (stackFrame.GetFileName() == null)
                {
                    info.nomeClasse = ex.TargetSite.ReflectedType.Name;
                    info.nomeMetodo = ex.TargetSite.Name;
                    info.mensagem   = ex.Message;
                    info.stackTrace = ex.StackTrace;
                }
                else
                {
                    // Collect data where exception occured
                    string[] splitFile = stackFrame.GetFileName().Split('\\');

                    info.nomeClasse = splitFile.Length > 0 ? splitFile[splitFile.Length - 1].Split('.').First() : string.Empty;
                    info.nomeMetodo = stackFrame.GetMethod().Name;
                    info.mensagem   = ex.Message;
                    info.numLinha   = stackFrame.GetFileLineNumber();
                    info.stackTrace = ex.StackTrace;
                }
            }
            catch
            {
            }

            return(info);
        }