C# 控制台应用程序-尝试捕捉块不';我不为任务工作
这可能是一个基本问题,但当我试图捕获在C# 控制台应用程序-尝试捕捉块不';我不为任务工作,c#,multithreading,exception,console-application,C#,Multithreading,Exception,Console Application,这可能是一个基本问题,但当我试图捕获在任务中抛出的异常时(在控制台应用程序中),即使我在try-catch块中调用任务.Wait(),应用程序也会因未处理的异常而中断(在抛出前添加类似线程.Sleep的内容也无济于事): 截图: 如果在catch中放置断点并继续执行,您将看到异常将被捕获。如果在catch中放置断点并继续执行,您将看到异常将被捕获。如果在catch中放置断点并继续执行,您将看到异常将被捕获捕获。如果在捕获中放置断点并继续执行,您将看到异常将被捕获。此屏幕仅在断点处显示正在发生的
任务中抛出的异常时(在控制台应用程序中),即使我在try-catch块中调用任务.Wait()
,应用程序也会因未处理的异常而中断(在抛出前添加类似线程.Sleep
的内容也无济于事):
截图:
如果在catch中放置断点并继续执行,您将看到异常将被捕获。如果在catch中放置断点并继续执行,您将看到异常将被捕获。如果在catch中放置断点并继续执行,您将看到异常将被捕获捕获。如果在捕获中放置断点并继续执行,您将看到异常将被捕获。此屏幕仅在断点处显示正在发生的情况,如果继续执行程序或将断点向下移动,您将看到异常为捕获,并按预期返回Null
从调试器的角度来看,最简单的解释是-我看到了异常,那么现在呢?ooo这里是catch语句,让我们看看如何处理它此屏幕仅在断点处显示正在发生的情况,如果继续执行程序或将断点向下移动,您将看到异常为catch,并按预期返回Null
从调试器的角度来看,最简单的解释是-我看到了异常,那么现在呢?ooo这里是catch语句,让我们看看如何处理它此屏幕仅在断点处显示正在发生的情况,如果继续执行程序或将断点向下移动,您将看到异常为catch,并按预期返回Null
从调试器的角度来看,最简单的解释是-我看到了异常,那么现在呢?ooo这里是catch语句,让我们看看如何处理它此屏幕仅在断点处显示正在发生的情况,如果继续执行程序或将断点向下移动,您将看到异常为catch,并按预期返回Null
从调试器的角度来看,最简单的解释是-我看到了异常,那么现在呢?ooo这里是catch语句,让我们看看如何处理它如果您等待任务,那么您将有异常。否则它将发生在另一个线程中。如果您等待任务,那么您将有异常。否则它将发生在另一个线程中。如果您等待任务,那么您将有异常。否则它将发生在另一个线程中。如果您等待任务,那么您将有异常。否则它将发生在另一个线程中。当此异常类型为“用户未处理”时,取消选中此行中断,然后单击“继续”
当此异常类型为“用户未处理”时,取消选中此行中断,然后单击“继续”
当此异常类型为“用户未处理”时,取消选中此行中断,然后单击“继续”
当此异常类型为“用户未处理”时,取消选中此行中断,然后单击“继续”
该代码对我来说很好。这对我来说很好。我得到零!在输出中。您可以单击继续
按钮,您将看到异常将被捕获。该代码对我来说运行良好。这对我来说很有效。我得到零!在输出中。您可以单击继续
按钮,您将看到异常将被捕获。该代码对我来说运行良好。这对我来说很有效。我得到零!在输出中。您可以单击继续
按钮,您将看到异常将被捕获。该代码对我来说运行良好。这对我来说很有效。我得到零!在输出中。您可以单击“继续”按钮,您将看到异常将被捕获。但为什么会出现错误窗口,这是主要问题。@Chirag:因为在没有捕获块的不同线程上发生了抛出null
。调试器无法预测您以后会在主线程上捕获异常。但为什么会出现错误窗口,这是主要问题。@Chirag:因为抛出null
发生在没有catch块的其他线程上。调试器无法预测您以后会在主线程上捕获异常。但为什么会出现错误窗口,这是主要问题。@Chirag:因为抛出null
发生在没有catch块的其他线程上。调试器无法预测您以后会在主线程上捕获异常。但为什么会出现错误窗口,这是主要问题。@Chirag:因为抛出null
发生在没有catch块的其他线程上。调试器无法预测稍后将在主线程上捕获异常。
static void Main(string[] args)
{
Task task = Task.Run(() => { throw null; });
try
{
task.Wait();
}
catch (AggregateException ae)
{
if (ae.InnerException is NullReferenceException)
Console.WriteLine("Null!");
else
Console.WriteLine("Exception!");
}
Console.ReadLine();
}