¿El método TryParse genera excepciones?
Como todos ya sabréis el método TryParse se utiliza para realizar conversiones de un tipo a otro, por ejemplo, para convertir una fecha representada en una variable string a una variable de tipo DateTime.
Si la conversión se puede realizar, devuelve true como resultado y en el segundo parámetro devuelve la fecha que representa el primer parámetro.
Si la conversión no se puede realizar, devuelve false como resultado y en este caso, por tratarse de un tipo DateTime devuelve MinValue en el segundo parámetro.
public static bool TryParse(
string s,
out DateTime result
)
Lo bueno de TryParse frente a otros métodos de conversión es que no genera una excepción si se produce un error en la conversión….o sí que puede generlas????
Pues sí, sí que puede….al menos es capaz de generar esta excepción:
Unhandled Exception: System.IndexOutOfRangeException: Index was outside the bounds of the array.
La razón de este error a día de hoy la sigo sin tener muy clara pero lo que sí tengo claro es que está relacionado con la configuración regional.
Y explico por qué no lo tengo muy claro; dos equipos, idéntica configuración regional, mismo sistema operativo, idioma etc……en uno funciona y en otro no. Mil pruebas jugando con la cultura en la conversión y nada…..todo parece correcto pero salta la excepción.
Y la solución pues algo ridícula a priori pero funcionó…..cambiamos el formato de la hora de la configuración regional, cambiamos para que en el hora no se incluyera la marca de AM/PM….y a partir de ese momento el método TryParse empezó a funcionar según las especificaciones.
Y lo más raro aún, volvimos a cambiar la configuración para ponerla en el estado anterior y seguía funcionando…ya no conseguimos volver a generar la excepción…
Este caso es un poco raro pero parece ser que sí que hay un error en el Framework .NET 2.0 con el método TryParse. No he podido comprobar si con el 3.5 ocurre lo mismo pero es más que probable que ya esté solucionado.
Aunque la situación que comento no es la misma, por lo que he podido leer, también existe un bug en el método TryParse de la versión 2.0 cuando en el formato de la fecha de la configuración regional se usan espacios como caracteres de separación pudiendo llegar a generarse esta excepción.
Conclusión, que aunque no está nada claro, si de repente os dais cuenta que el método TryParse os genera una excepción no penséis que os habéis vuelto loco y buscar en la causa en la configuración regional.