在深度C#中调试FileNotFoundException
本文关键字:调试 FileNotFoundException 深度 | 更新日期: 2023-09-27 18:21:52
我在创建FileStream时遇到随机FileNotFoundException问题。文件路径是正确的,文件存在,但我仍然会随机获得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();
}
}
我想不出任何可能导致这种情况的原因,有什么方法可以更深入地调试吗?
调试应该很简单。在try/catch
块之前将以下内容添加到代码中:
if((!fileInfo.Exists) && (Debugger.IsAttached))
{
Debugger.Break();
}
这将使您进入文件不存在的状态。无论如何,在您的生产代码中打开文件之前,您应该检查文件是否存在,以防止在应用程序已经运行时文件被删除或正在使用。