C# 未经授权的访问异常可以';不要被抓住
我最近遇到了这个问题,它没有意义 以下片段是真实的:C# 未经授权的访问异常可以';不要被抓住,c#,wpf,exception,C#,Wpf,Exception,我最近遇到了这个问题,它没有意义 以下片段是真实的: try { File.Create(targetFile); //File.WriteAllText(targetFile, $"test {DateTime.Now.ToString()}"); } catch (UnauthorizedAccessException uaex) { } 我已经一步一步地检查了它,只要我使用调试器访问“File.Create()”方法,异常就会出现,它不会进入catc
try
{
File.Create(targetFile);
//File.WriteAllText(targetFile, $"test {DateTime.Now.ToString()}");
}
catch (UnauthorizedAccessException uaex)
{
}
我已经一步一步地检查了它,只要我使用调试器访问“File.Create()”方法,异常就会出现,它不会进入catch块,而且,如果我删除try catch,它也不会冒泡到调用包含它的方法
有人知道为什么试抓和泡泡不起作用吗
另外,我试图创建文件的位置是故意写保护的,这只是一种检查是否写保护的方法。我犯了一个错误
异常实际上正在被捕获,如果您在catch块中放入任何内容,它就会执行
说句公道话,调试器在调用方法时正好显示了异常弹出窗口,这让我很困惑,但通过重新启动IDE解决了这个问题,我犯了一个错误
异常实际上正在被捕获,如果您在catch块中放入任何内容,它就会执行
公平地说,调试器在调用该方法时显示了异常弹出窗口,这让我很困惑,但通过重新启动IDE解决了这一问题。在程序中,哪里有此代码?这是一个相当复杂的项目,当应用程序启动时,此方法是从后台线程调用的。我只是给你一个替代方案,若要检查目录是否仅写保护,您可以检查该链接上的解决方案:@Excalibrus我认为这不会在所有情况下适用于对目录具有不同权限的所有用户。@LasseV.Karlsen我制作了一个测试应用程序,试图“混淆”BackgroundWorkers在主线程上运行任务,创建后台线程来运行我发布的相同try-catch。我似乎无法用多线程或单线程重现问题。程序中的哪里有这些代码?这是一个相当复杂的项目,在应用程序启动时从后台线程调用此方法。我只是给你一个替代方法,检查目录是否只写保护,您可以在该链接上查看解决方案:@excaliburs我认为这在所有情况下都不适用于对该目录拥有不同权限的所有用户。@LasseV.Karlsen我制作了一个测试应用程序,在该应用程序中,我试图“混淆”后台工作人员,他们在主线程上运行任务,创建后台线程来运行与我发布的相同的try-catch。我似乎无法用多线程或单线程重现问题。