seguimiento a la respuesta de gbogumil, en el primer caso se obtiene:
"Input string was not in a correct format."
y en el segundo, se obtiene:
"Index (zero based) must be greater than or equal to
zero and less than the size of the argument list."
Si necesita sentir el cual (por mensajes de usuario o registro), entonces podría usar un try catch como qor72 sugerido, y verificar con qué comienza el mensaje de error. Además, si usted necesita para capturar lo que era la cadena de formato, y cuáles fueron los argumentos, tendrá que hacer algo como esto:
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: Agregado de la simple expresión regular para contar las fichas de formato. Podría ayudar ...
Espero que esto ayude. ¡Buena suerte!
¿Está buscando una mayor mensaje de falla específica? ¿Como un mensaje de "no parece un número"? – SqlRyan
La propiedad del mensaje será diferente. No lo analice, solo demuéstralo. –
@rwmnau No estoy seguro de lo que quiere decir con un mensaje de "no parece un número", pero no necesito saber nada más específico que qué condición falló. – Tinister