2017-07-14 80 views
0

我試圖從移動文件通過ftp到B是這樣的:處理一般例外在特定情況下

ftpClient.Rename(sourcePathName, targetPathName); 

我想捕捉和處理時有文件要發生的所有異常移動未找到。但是Rename會拋出值爲{"file/directory not found"}的通用異常FtpCommandException。不幸的是,這種例外情況在其他一些情況下引發。

我不覺得比較例外的值是像一個乾淨的方法:

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

如果你需要異常被不同的處理你不能用它自己的try/catch塊分割你的命名代碼出了自己的作用? – uk2k05

回答

0

也許喲ü應檢查文件是否試圖重命名之前存在:

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

愚蠢的我......當然這是它。 – mosquito87

1

C#6日起,您可以使用異常過濾

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

前C#6你唯一的選擇是一個條件漁獲:

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