private static bool HandleKnownExceptions(Exception ex)
{
// Tools.WriteDebug("HandleKnownExceptions", ex.StackTrace);
// invalid regex - only ArgumentException, without subclasses
if (ex is ArgumentException &&
(ex.StackTrace.Contains("System.Text.RegularExpressions") ||
ex.ToString().StartsWith(@"System.ArgumentException: parsing")))
{
MessageBox.Show(ex.Message, "Invalid regular expression",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
//Unsupported Culture, possibly bn-BD
else if (ex is ArgumentException && Thrower(ex) == "CultureTableRecord.GetCultureTableRecord")
{
MessageBox.Show(
"Microsoft unfortunately don't support your locale culture. Please try a more common one",
"Unsupported culture");
}
// network access error
else if (ex is System.Net.WebException || ex.InnerException is System.Net.WebException)
{
// if AWB starts up offline we'll hit here, so provide clear network related message
string msg = ex.Message.StartsWith(@"The type initializer for") ? ex.InnerException.Message : ex.Message;
MessageBox.Show(msg, "Network access error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
// out of memory error
else if (ex is OutOfMemoryException)
{
MessageBox.Show(ex.Message, "Out of Memory error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
// disk writer error / full
else if (ex is System.IO.IOException ||
ex is ConfigurationErrorsException && ex.InnerException != null &&
ex.InnerException.InnerException is System.IO.IOException)
{
MessageBox.Show(ex.Message, "I/O error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
// BackGroundRequest Abort called as user pressed stop, this is OK
else if (ex is ThreadAbortException &&
(ex.StackTrace.Contains("AutoWikiBrowser.MainForm.ProcessPage") ||
ex.StackTrace.Contains("Parsers.TagOrphans")))
{
return true;
}
else
{
return false; // We didn't handle the exception
}
return true; // We handled the exception
}