2011-04-11 74 views
0

以下代碼是否可以引發異常並且不會複製文件?File.Copy方法

void Copy2(string from, string to) 
{ 
    lock (_thisLock) 
    { 
    if (File.Exists(from)) 
    { 
     File.Copy(from, to, true); 
     return; 
    } 
    Logger.Write("File does not exists"); 
    } 
} 

客戶說應用程序不會崩潰,不會複製任何文件,也不會寫入日誌。 記錄器類型爲Microsoft.Practices.EnterpriseLibrary.Logging.Logger

+0

如果「from」文件不存在,它不會執行任何操作,但我假設這不是你的問題... – Paolo 2011-04-11 14:19:39

+0

你可以仔細檢查記錄器配置嗎? – 2011-04-11 14:28:48

回答

3

當然,如果該文件不存在 - (!File.Exists) - 那麼File.Copy調用將不會達到。

Logger.Write不算作爲例外。

如果根據您的更新建議,日誌中沒有任何內容,我會仔細檢查Logger.Write函數。它是否正確實施?在該方法中拋出並處理了異常嗎?如果沒有拋出異常,這可能比File.Copy失敗的可能性更大。

+0

記錄器的類型是Microsoft.Practices.EnterpriseLibrary.Logging.Logger – Alexander 2011-04-11 14:27:00

+0

然後,您需要確保您已正確配置記錄器。請查閱http://www.codeproject.com/KB/architecture/GetLoggingWithEntLib.aspx,以獲取有關使用MSEL Logging框架的相當詳細的概述。 – Jaymz 2011-04-11 14:31:36

0

如果文件不存在,也沒有記錄追加程序已經配置,那麼可能會出現您所描述的情況 - 即沒有錯誤,沒有記錄

0

看着MSDN for File.Copy你可以看到,它拋出了不少例外。讓你捕捉堆棧上方的異常,正確地處理異常/錯誤,而不是簡單地吞噬它