我们的应用程序正在移动启动期间运行所需的一些文件。
应用程序会注意(在关闭时)正确停止使用此文件的每个进程。
但是,如果应用程序崩溃/或者您只是在VS中调试时按了“停止”,则某些可执行文件可能仍在运行。
因此,如果快速重新启动应用程序,可能会发生复制尝试失败的情况,因为文件仍在使用中。
对于这种情况,我们只需忽略失败的复制尝试-或者更确切地说:失败的删除尝试,它应该确保最新版本可用:
foreach(String entry in contents)
{
if (System.IO.File.Exists(entry))
{
try
{
System.IO.File.Delete(entry);
}catch (Exception e)
{
//ignore during this startup.
}
}
}
现在,这样做非常好,因为有一个版本的文件可供使用,而生产版本只是忽略了异常。
令人恼火的问题是,调试器每次都会“中断”这个错误。
-
我们不想通常“忽略”任何
System.IO.IOException
调试时引发。
-
我们试图用
[System.Diagnostics.DebuggerStepThrough()]
它可以工作,但会导致在调用方位置捕获异常。
那么,有没有办法忽略在某一行代码中引发的“某些”异常,即使启用了这种类型的“中断”?
一些
#if (DEBUG)
-避免在这一行代码中捕获异常的指令?
比如:
foreach(String entry in contents)
{
if (System.IO.File.Exists(entry))
{
try
{
#if (DEBUG:NoThrow)
System.IO.File.Delete(entry);
#endif
}catch (Exception e)
{
//ignore during this startup.
}
}
}