public static ErrorFormatter CreateDefault() { var f = new ErrorFormatter(); f.Formatters.Add((e, o) => DotvvmMarkupErrorSection.Create(e)); f.Formatters.Add((e, o) => new ExceptionSectionFormatter { Exception = f.LoadException(e) }); f.Formatters.Add((e, o) => DictionarySection.Create("Cookies", "cookies", o.Request.Cookies)); f.Formatters.Add((e, o) => DictionarySection.Create("Request Headers", "reqHeaders", o.Request.Headers)); f.AddInfoLoader <ReflectionTypeLoadException>(e => new ExceptionAdditionalInfo { Title = "Loader Exceptions", Objects = e.LoaderExceptions.Select(lde => lde.GetType().Name + ": " + lde.Message).ToArray(), Display = ExceptionAdditionalInfo.DisplayMode.ToString }); f.AddInfoLoader <DotvvmCompilationException>(e => { var info = new ExceptionAdditionalInfo() { Title = "DotVVM Compiler", Objects = null, Display = ExceptionAdditionalInfo.DisplayMode.ToString }; if (e.Tokens != null && e.Tokens.Any()) { info.Objects = new object[] { $"Error in '{string.Concat(e.Tokens.Select(t => t.Text))}' at line {e.Tokens.First().LineNumber} in {e.SystemFileName}" }; } return(info); }); f.AddInfoCollectionLoader <InvalidCommandInvocationException>(e => { if (e.AdditionData == null || !e.AdditionData.Any()) { return(null); } var infos = new List <ExceptionAdditionalInfo>(); foreach (var data in e.AdditionData) { infos.Add(new ExceptionAdditionalInfo() { Title = data.Key, Objects = data.Value, Display = ExceptionAdditionalInfo.DisplayMode.ToHtmlList }); } return(infos); }); return(f); }
public virtual SourceModel ExtractSource(Exception exc) { if (exc is DotvvmCompilationException) { var compilationException = (DotvvmCompilationException)exc; if (compilationException.Tokens != null && compilationException.Tokens.Any()) { var errorColumn = compilationException.Tokens.First().ColumnNumber; var errorLength = compilationException.Tokens.Where(t => t.LineNumber == compilationException.LineNumber).Sum(t => t.Length); if (compilationException.FileName != null) { return(ErrorFormatter.LoadSourcePiece(compilationException.FileName, compilationException.LineNumber ?? 0, errorColumn: errorColumn, errorLength: errorLength)); } else { var line = string.Concat(compilationException.Tokens.Select(s => s.Text)); return(CreateAnonymousLine(line, lineNumber: compilationException.Tokens.First().LineNumber)); } } else if (compilationException.FileName != null) { return(ErrorFormatter.LoadSourcePiece(compilationException.FileName, compilationException.LineNumber ?? 0, errorColumn: compilationException.ColumnNumber ?? 0, errorLength: compilationException.ColumnNumber != null ? 1 : 0)); } } else if (exc is BindingCompilationException) { var bce = (BindingCompilationException)exc; if (bce.Expression != null) { var first = bce.Tokens.First().StartPosition; return(CreateAnonymousLine(bce.Expression, first, bce.Tokens.Last().StartPosition + bce.Tokens.Last().Length - first)); } else if (bce.Tokens != null) { return(CreateAnonymousLine(string.Concat(bce.Tokens.Select(t => t.Text)))); } } else if (exc is DotvvmControlException) { var controlException = (DotvvmControlException)exc; return(ErrorFormatter.LoadSourcePiece(controlException.FileName, controlException.LineNumber ?? 0)); } return(null); }
public static ErrorFormatter CreateDefault() { var f = new ErrorFormatter(); f.Formatters.Add((e, o) => DotvvmMarkupErrorSection.Create(e)); f.Formatters.Add((e, o) => new ExceptionSectionFormatter { Exception = f.LoadException(e) }); f.Formatters.Add((e, o) => DictionarySection.Create("Cookies", "cookies", o.Request.Cookies)); f.Formatters.Add((e, o) => DictionarySection.Create("Request Headers", "reqHeaders", o.Request.Headers)); f.Formatters.Add((e, o) => DictionarySection.Create("Environment", "env", o.Environment)); f.AddInfoLoader <ReflectionTypeLoadException>(e => new ExceptionAdditionalInfo { Title = "Loader Exceptions", Objects = e.LoaderExceptions.Select(lde => lde.GetType().Name + ": " + lde.Message).ToArray(), Display = ExceptionAdditionalInfo.DisplayMode.ToString }); f.AddInfoLoader <DotvvmCompilationException>(e => { var info = new ExceptionAdditionalInfo() { Title = "DotVVM Compiler", Objects = null, Display = ExceptionAdditionalInfo.DisplayMode.ToString }; if (e.Tokens != null && e.Tokens.Any()) { info.Objects = new object[] { $"Error in '{string.Concat(e.Tokens.Select(t => t.Text))}' at line {e.Tokens.First().LineNumber} in {e.SystemFileName}" }; } return(info); }); return(f); }
private SourceModel ExtractSourceFromDotvvmCompilationException(DotvvmCompilationException compilationException) { if (compilationException.Tokens != null && compilationException.Tokens.Any()) { var errorColumn = compilationException.Tokens.FirstOrDefault()?.ColumnNumber ?? 0; var errorLength = compilationException.Tokens.Where(t => t.LineNumber == compilationException.LineNumber).Sum(t => t.Length); if (compilationException.FileName != null) { return(ErrorFormatter.LoadSourcePiece(compilationException.FileName, compilationException.LineNumber ?? 0, errorColumn: errorColumn, errorLength: errorLength)); } else { var line = string.Concat(compilationException.Tokens.Select(s => s.Text)); return(CreateAnonymousLine(line, lineNumber: compilationException.Tokens.FirstOrDefault()?.LineNumber ?? 0)); } } else if (compilationException.FileName != null) { return(ErrorFormatter.LoadSourcePiece(compilationException.FileName, compilationException.LineNumber ?? 0, errorColumn: compilationException.ColumnNumber ?? 0, errorLength: compilationException.ColumnNumber != null ? 1 : 0)); } return(null); }
public static ErrorFormatter CreateDefault() { var f = new ErrorFormatter(); f.Formatters.Add((e, o) => DotvvmMarkupErrorSection.Create(e)); f.Formatters.Add((e, o) => new ExceptionSectionFormatter(f.LoadException(e), "Raw Stack Trace", "raw_stack_trace")); f.Formatters.Add((e, o) => DictionarySection.Create("Cookies", "cookies", o.Request.Cookies)); f.Formatters.Add((e, o) => DictionarySection.Create("Request Headers", "reqHeaders", o.Request.Headers)); f.Formatters.Add((e, o) => { var b = e.AllInnerExceptions().OfType <BindingPropertyException>().Select(a => a.Binding).OfType <ICloneableBinding>().FirstOrDefault(); if (b == null) { return(null); } return(DictionarySection.Create("Binding", "binding", new [] { new KeyValuePair <object, object>("Type", b.GetType().FullName) } .Concat( b.GetAllComputedProperties() .Select(a => StripBindingProperty(a.GetType().Name, a)) .Select(a => new KeyValuePair <object, object>(a.name, a.value)) ).ToArray())); }); f.AddInfoLoader <ReflectionTypeLoadException>(e => new ExceptionAdditionalInfo { Title = "Loader Exceptions", Objects = e.LoaderExceptions.Select(lde => lde.GetType().Name + ": " + lde.Message).ToArray(), Display = ExceptionAdditionalInfo.DisplayMode.ToString }); f.AddInfoLoader <DotvvmCompilationException>(e => { var info = new ExceptionAdditionalInfo() { Title = "DotVVM Compiler", Objects = null, Display = ExceptionAdditionalInfo.DisplayMode.ToString }; if (e.Tokens != null && e.Tokens.Any()) { info.Objects = new object[] { $"Error in '{string.Concat(e.Tokens.Select(t => t.Text))}' at line {e.Tokens.First().LineNumber} in {e.SystemFileName}" }; } return(info); }); f.AddInfoCollectionLoader <InvalidCommandInvocationException>(e => { if (e.AdditionData == null || !e.AdditionData.Any()) { return(null); } var infos = new List <ExceptionAdditionalInfo>(); foreach (var data in e.AdditionData) { infos.Add(new ExceptionAdditionalInfo() { Title = data.Key, Objects = data.Value, Display = ExceptionAdditionalInfo.DisplayMode.ToHtmlList }); } return(infos); }); return(f); }
private SourceModel ExtractSourceFromDotvvmControlException(DotvvmControlException controlException) { return(ErrorFormatter.LoadSourcePiece(controlException.FileName, controlException.LineNumber ?? 0)); }