public static void AppendException(this RichTextBox box, Exception ex, int depth = 0) { if (depth == 0) { box.StartTimestamp(); } if (ex != null) { System.Diagnostics.Debug.WriteLine(ex.Message + " " + ex.GetType()); System.Diagnostics.Debug.WriteLine("depth = " + depth); box.AppendText(new string(' ', depth)); if (ex is ModelTransformationComponent.TransformComponentException) { if (ex is ModelTransformationComponent.SyntaxErrorPlaced se) { box.AppendText("[", Color.Black); box.AppendText(se.Line.ToString(), Color.Blue); box.AppendText(",", Color.Black); box.AppendText(se.Symbol.ToString(), Color.Blue); box.AppendText("] ", Color.Black); box.AppendText(se.TrimedMsg, Color.Red); } else { box.AppendText(ex.Message, Color.Red); } } else { box.AppendText("Unexpected exception\n", Color.Red); box.AppendText(new string(' ', depth)); box.AppendText(ex.Message, Color.Red); } box.AppendText("\n"); box.AppendException(ex.InnerException, depth + 4); } else { box.EndTimestamp(); } }