当我创建FileStream时,我遇到了随机FileNotFoundExceptions的问题。文件路径是正确的,文件存在,我仍然随机获得FileNotFoundException。我该如何更详细地调试这个?我正在运行Windows Mobile 6项目,这是个例外:
System.IO.FileNotFoundException: Could not find file '\Program Files\xxx\xxx\xxx-11133.bin'.
at System.IO.__Error.WinIOError(Int32 errorCode, String str)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync, String msgPath)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access)
这是抛出异常的方法:
internal static FInstance ReadAndDecrypt(string key, string fiId)
{
FileInfo fileInfo = new FileInfo(FullFilePath(fiId));
FileStream fileStream = null;
CryptoStream cryptoStream = null;
GZipInputStream zipStream = null;
try
{
int time = Environment.TickCount;
fileStream = new FileStream(fileInfo.FullName, FileMode.Open, FileAccess.Read);
var serializer = new XmlSerializer(typeof(FInstance));
var FInstance = (FInstance)serializer.Deserialize(fileStream);
return Instance;
}
catch (Exception e)
{
Log.Error(e);
return null;
}
finally
{
if (fileStream != null)
fileStream.Close();
}
}
我无法想到任何可能导致这种情况发生的事情,有没有办法更深入地调试?
答案 0 :(得分:1)
调试这应该是直截了当的。在try/catch
块之前的代码中添加以下内容:
if((!fileInfo.Exists) && (Debugger.IsAttached))
{
Debugger.Break();
}
这将使您进入文件不存在的状态。无论如何,您应该在生产代码中打开文件之前检查是否存在,以防止在应用程序运行时文件被删除或正在使用等文件。