2017-07-14 4 views
0

Ich versuche, eine Datei von A zu bewegen, über ftp wie dies nach B:Handhabung generische Ausnahmen in bestimmten Fällen

ftpClient.Rename(sourcePathName, targetPathName); 

Ich möchte alle Ausnahmen fangen und zu behandeln, die auftreten, wenn die Datei, die sein muss bewegt wurde nicht gefunden. Rename löst jedoch die generische Ausnahme FtpCommandException mit dem Wert {"file/directory not found"} aus. Leider wird diese Ausnahme in einigen anderen Fällen ausgelöst.

Ich glaube nicht, dass der Wert einer Ausnahme zu vergleichen ist ein sauberer Ansatz wie:

if("file/directory not found".equals(exception.value)) ... 
+0

Wenn Ausnahmen anders behandelt werden müssen, können Sie nicht teilen Sie Ihre Umbenennungs Code, um seine eigene Funktion mit einer eigenen try/catch-Block? – uk2k05

Antwort

0

yo Vielleicht u sollten überprüfen, ob die Datei vorhanden ist, bevor Sie die Umbenennungs versucht:

if (ftpClient.FileExists(sourcePathName)){ 
    ftpClient.Rename(sourcePathName, targetPathName); 
} 
+0

Dumm ich ... Natürlich hat das getan. – mosquito87

1

C# 6 ab, können Sie Ausnahme-Filterung

try 
{ 
    // your code 
} 
catch(FtpCommandException ex) 
     when (ex.Value == "file/directory not found") 
{ 
    // do something with this exception 
} 

Pre C# 6 verwenden, um Ihre einzige Möglichkeit war eine Bedingung innen der Haken:

try 
{ 
    // your code 
} 
catch(FtpCommandException ex) 
{ 
    if(ex.Value == "file/directory not found") 
    { 
     // do something with this exception 
    } 
} 
Verwandte Themen