Supposons que je crée et exécute un System.Net.FtpWebRequest
.Attraper une WebException spécifique (550)
Je peux utiliser catch (WebException ex) {}
pour intercepter toute exception Web liée à cette demande. Mais que faire si j'ai une logique que je veux seulement exécuter quand l'exception est levée en raison de (550) file not found
?
Quelle est la meilleure façon de faire cela? Je pourrais copier le message d'exception et d'essai pour l'égalité:
const string fileNotFoundExceptionMessage =
"The remote server returned an error: (550) File unavailable (e.g., file not found, no access).";
if (ex.Message == fileNotFoundExceptionMessage) {
Mais théoriquement, il semble que ce message pourrait changer sur la route. Ou, je pourrais simplement tester si le message d'exception contient "550". Cette approche est probablement plus susceptible de fonctionner si le message est modifié (il contiendra probablement encore "550" quelque part dans le texte). Mais bien sûr, un tel test retournerait aussi vrai si le texte d'un autre WebException
contient justement "550".
Il ne semble pas exister de méthode pour accéder uniquement au numéro de l'exception. Est-ce possible?
Attraper un 'WebException' seulement vous donner un' status' de ** ProtocolError **. Vous devez convertir la réponse ex à une réponse HttpWeb comme dans la réponse ci-dessus pour obtenir le code souhaité (c.-à-d. 404, 500). – ProKiner