Digamos que creo y ejecuto un System.Net.FtpWebRequest
.Captura de una WebException específica (550)
Puedo usar catch (WebException ex) {}
para atrapar cualquier excepción relacionada con la web generada por esta solicitud. Pero, ¿qué ocurre si tengo alguna lógica que solo deseo ejecutar cuando se lanza la excepción debido al (550) file not found
?
¿Cuál es la mejor manera de hacerlo? Podría copiar el mensaje de excepción y probar la igualdad:
const string fileNotFoundExceptionMessage =
"The remote server returned an error: (550) File unavailable (e.g., file not found, no access).";
if (ex.Message == fileNotFoundExceptionMessage) {
Pero teóricamente parece que este mensaje podría cambiar en el futuro.
O bien, podría probar para ver si el mensaje de excepción contiene "550". Es probable que este enfoque funcione más si se cambia el mensaje (probablemente aún contenga "550" en algún lugar del texto). Pero, por supuesto, una prueba de este tipo también volvería a ser verdadera si el texto de algún otro WebException
contiene "550".
No parece haber un método para acceder solo al número de la excepción. es posible?
La captura de un 'WebException' sólo le dará un'Estado' de ProtocolError ** **. Debe enviar la respuesta ex a HttpWebResponse como en la respuesta anterior para obtener el código deseado (es decir, 404, 500). – ProKiner