C#不会捕获“嵌套”自定义异常

我试图在代码中捕捉到“嵌套”或“封装”自定义错误(I504Error)。我知道这通常不是最佳实践,但它应该适用于我的用例,因为错误非常具体。我试图让try/catch区块在我的Main方法中捕获I504Error,但它无法捕获它,即使它是从try/catch区块内部调用的。我的程序停止在我抛出错误的地方。我在这里做错了什么?C#不会捕获“嵌套”自定义异常

// Custom Error Handler 

public class I504Error : Exception

{

public I504Error()

{

}

}

// Classes

public abstract class AbstractIternetThing

{

public abstract void DoSomething();

}

public class IternetThing : AbstractIternetThing

{

public override void DoSomething()

{

// bunch of other stuff

if (iternetThingWorkedProperly == false)

{

// Program stops here, doesn't get caught by the try/catch block in Program.Main()

throw new I504Error();

}

}

}

// Main script

class Pogram

{

static void Main(string[] args)

{

List<Task<AbstractIternetThing>> programThreads = new List<Task<AbstractIternetThing>>();

IternetThing iThing = new IternetThing();

try

{

for (int wantedThread = 0; wantedThread < 5; wantedThread++)

{

Task<AbstractIternetThing> iThingTask = new Task<AbstractIternetThing>(() => iThing.DoSomething());

iThingTask.Start();

}

}

// The Error should get caught here, but it doesnt?

catch (I504Error)

{

// Do something else

}

}

}

回答:

这是因为你有它在一个Task这是在一个单独的异步执行路径。考虑使用异步等待。然后编译器会重写您的代码,使其按照您的预期工作。

以上是 C#不会捕获“嵌套”自定义异常 的全部内容, 来源链接: utcz.com/qa/257829.html

回到顶部