UnityEngine.StackTraceUtility.ExtractFormattedStackTrace C# (CSharp) Method

ExtractFormattedStackTrace() private method

private ExtractFormattedStackTrace ( StackTrace stackTrace ) : string
stackTrace System.Diagnostics.StackTrace
return string
        internal static string ExtractFormattedStackTrace(StackTrace stackTrace)
        {
            StringBuilder builder = new StringBuilder(0xff);
            for (int i = 0; i < stackTrace.FrameCount; i++)
            {
                StackFrame frame = stackTrace.GetFrame(i);
                MethodBase method = frame.GetMethod();
                if (method != null)
                {
                    System.Type declaringType = method.DeclaringType;
                    if (declaringType != null)
                    {
                        string str = declaringType.Namespace;
                        if ((str != null) && (str.Length != 0))
                        {
                            builder.Append(str);
                            builder.Append(".");
                        }
                        builder.Append(declaringType.Name);
                        builder.Append(":");
                        builder.Append(method.Name);
                        builder.Append("(");
                        int index = 0;
                        ParameterInfo[] parameters = method.GetParameters();
                        bool flag = true;
                        while (index < parameters.Length)
                        {
                            if (!flag)
                            {
                                builder.Append(", ");
                            }
                            else
                            {
                                flag = false;
                            }
                            builder.Append(parameters[index].ParameterType.Name);
                            index++;
                        }
                        builder.Append(")");
                        string fileName = frame.GetFileName();
                        if ((fileName != null) && (((((declaringType.Name != "Debug") || (declaringType.Namespace != "UnityEngine")) && ((declaringType.Name != "Logger") || (declaringType.Namespace != "UnityEngine"))) && (((declaringType.Name != "DebugLogHandler") || (declaringType.Namespace != "UnityEngine")) && ((declaringType.Name != "Assert") || (declaringType.Namespace != "UnityEngine.Assertions")))) && (((method.Name != "print") || (declaringType.Name != "MonoBehaviour")) || (declaringType.Namespace != "UnityEngine"))))
                        {
                            builder.Append(" (at ");
                            if (fileName.Replace(@"\", "/").StartsWith(projectFolder))
                            {
                                fileName = fileName.Substring(projectFolder.Length, fileName.Length - projectFolder.Length);
                            }
                            builder.Append(fileName);
                            builder.Append(":");
                            builder.Append(frame.GetFileLineNumber().ToString());
                            builder.Append(")");
                        }
                        builder.Append("\n");
                    }
                }
            }
            return builder.ToString();
        }

Usage Example

コード例 #1
0
        internal static void ExtractStringFromExceptionInternal(object exceptiono, out string message, out string stackTrace)
        {
            bool flag = exceptiono == null;

            if (flag)
            {
                throw new ArgumentException("ExtractStringFromExceptionInternal called with null exception");
            }
            Exception ex    = exceptiono as Exception;
            bool      flag2 = ex == null;

            if (flag2)
            {
                throw new ArgumentException("ExtractStringFromExceptionInternal called with an exceptoin that was not of type System.Exception");
            }
            StringBuilder stringBuilder = new StringBuilder((ex.StackTrace == null) ? 512 : (ex.StackTrace.Length * 2));

            message = "";
            string text = "";

            while (ex != null)
            {
                bool flag3 = text.Length == 0;
                if (flag3)
                {
                    text = ex.StackTrace;
                }
                else
                {
                    text = ex.StackTrace + "\n" + text;
                }
                string text2 = ex.GetType().Name;
                string text3 = "";
                bool   flag4 = ex.Message != null;
                if (flag4)
                {
                    text3 = ex.Message;
                }
                bool flag5 = text3.Trim().Length != 0;
                if (flag5)
                {
                    text2 += ": ";
                    text2 += text3;
                }
                message = text2;
                bool flag6 = ex.InnerException != null;
                if (flag6)
                {
                    text = "Rethrow as " + text2 + "\n" + text;
                }
                ex = ex.InnerException;
            }
            stringBuilder.Append(text + "\n");
            StackTrace stackTrace2 = new StackTrace(1, true);

            stringBuilder.Append(StackTraceUtility.ExtractFormattedStackTrace(stackTrace2));
            stackTrace = stringBuilder.ToString();
        }
All Usage Examples Of UnityEngine.StackTraceUtility::ExtractFormattedStackTrace