gpt4 book ai didi

c# - 我无法捕捉到异常

转载 作者:太空狗 更新时间:2023-10-29 22:26:12 25 4
gpt4 key购买 nike

我有这段代码:

try
{
var files = from folder in paths
from file in Directory.EnumerateFiles(path, pattern, searchOption)
select new Foo() { folder = folder, fileName = file };

Parallel.ForEach(files, new ParallelOptions { MaxDegreeOfParallelism = _maxDegreeOfParallelism }, currentFile =>
{
DoWork(currentFile);
});
}
catch (Exception ex)
{

}

当我在Directory.EnumerateFiles 中出现异常时,我无法在这段代码中捕捉到这个异常。异常被调用此代码段的方法捕获。

在 Visual Studio 中,在 Debug模式下,异常会被 Visual Studio 捕获(例如 DirectoryNotFoundException)。

最佳答案

问题是你在这里异步调用代码:

Parallel.ForEach(files, new ParallelOptions { MaxDegreeOfParallelism = _maxDegreeOfParallelism }, currentFile =>
{
DoWork(currentFile);
});

这会在单独的线程上进行调用,而不是在您的主线程上进行。

像这样使用 try & catch block :

Parallel.ForEach(files, new ParallelOptions { MaxDegreeOfParallelism = _maxDegreeOfParallelism }, currentFile =>
{
try
{
DoWork(currentFile);
}
catch (Exception ex) { ... }
});

关于c# - 我无法捕捉到异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27570391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com