Следуйте ответу Гбумила, в первом случае вы получите:
"Input string was not in a correct format."
и во втором вы получите:
"Index (zero based) must be greater than or equal to
zero and less than the size of the argument list."
Если вам необходимо определить, какой (для обмена сообщениями пользователя или ведения журнала), вы можете использовать попытку try, подобную qor72, и проверить, с чего начинается сообщение об ошибке. Кроме того, если вам нужно захватить строку форматирования и аргументы, вам нужно будет сделать что-то вроде этого:
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 );
}
РЕДАКТИРОВАТЬ: Добавлено простое регулярное выражение для подсчета токенов формата. Могу помочь ...
Надеюсь, это поможет. Удачи!