public BugReport(Exception ex)
{
var apiException = ex as ApiException;
var thread = apiException != null ? apiException.ThrowingThread : System.Threading.Thread.CurrentThread;
if (thread.Name != "Main thread")
{
Thread = thread.Name;
}
StringBuilder stackTrace = new StringBuilder();
FormatException(ex, stackTrace, ExceptionKind.TopLevel);
StackTrace = stackTrace.ToString();
if (apiException != null)
{
ApiExtra = apiException.GetExtraSpecificInformation();
}
if (AppendToErrorHandler != null)
{
StringBuilder append = new StringBuilder();
foreach (Delegate d in AppendToErrorHandler.GetInvocationList())
{
string retval = d.DynamicInvoke().ToString();
if (!string.IsNullOrEmpty(retval))
append.AppendLine(retval);
}
AppendedInfo = append.ToString();
}
AssemblyName hostingApp = Assembly.GetExecutingAssembly().GetName();
Version = string.Format("{0} ({1}), {2} ({3})", Application.ProductName, Application.ProductVersion,
hostingApp.Name, hostingApp.Version);
DotNetVersion = Environment.Version.ToString();
// suppress unhandled exception if Variables constructor says 'ouch'
try
{
Version += ", revision " + Variables.Revision;
}
catch
{
}
// TODO: Phab urls
if (!string.IsNullOrEmpty(CurrentPage))
{
// don't use Tools.WikiEncode here, to keep code portable to updater
// as it's not a pretty URL, we don't need to follow the MediaWiki encoding rules
string link = "[" + Variables.URLIndex + "?title=" + HttpUtility.UrlEncode(CurrentPage) + "&oldid=" +
CurrentRevision + "]";
Duplicate = "[encountered while processing page ''" + link + "'']";
}
else if (!string.IsNullOrEmpty(ListMakerText))
{
Duplicate = "'''ListMaker Text:''' " + ListMakerText;
}
}