Folgen zu gbogumil Antwort auf, im ersten Fall erhalten Sie:
"Input string was not in a correct format."
und in der zweiten, erhalten Sie:
"Index (zero based) must be greater than or equal to
zero and less than the size of the argument list."
Wenn Sie erfassen müssen, die (für Benutzer messaging oder logging), dann könnten Sie einen try catch wie qor72 vorgeschlagen verwenden, und prüfen Sie, wo die Fehlermeldung beginnt. Darüber hinaus müssen, wenn Sie erfassen, was das Format-String war, und was die args waren, müssen Sie so etwas wie dies tun:
string myStr = "{0}{1}{2}";
string[] strArgs = new string[]{"this", "that"};
string result = null;
try { result = string.Format(myStr, strArgs); }
catch (FormatException fex)
{
if (fex.Message.StartsWith("Input"))
Console.WriteLine
("Trouble with format string: \"" + myStr + "\"");
else
Console.WriteLine
("Trouble with format args: " + string.Join(";", strArgs));
string regex = @"\{\d+\}";
Regex reg = new Regex(regex, RegexOptions.Multiline);
MatchCollection matches = reg.Matches(myStr);
Console.WriteLine
("Your format has {0} tokens and {1} arguments",
matches.Count, strArgs.Length);
}
EDIT: Added die einfache regex Format-Token zählen. Könnte helfen ...
Hoffnung, das hilft. Viel Glück!
Suchen Sie eine spezifische Fehlermeldung? Wie eine "sieht nicht wie eine Nummer aus" Nachricht? – SqlRyan
Die Message-Eigenschaft wird anders sein. Parsiere es nicht, zeige es einfach. –
@rwmnau Ich bin mir nicht sicher, was Sie mit einer "'sieht nicht wie eine Nummer' Nachricht", aber ich brauche nichts genauer zu wissen, als welche Bedingung fehlgeschlagen ist. – Tinister