Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 控制台应用程序-尝试捕捉块不';我不为任务工作_C#_Multithreading_Exception_Console Application - Fatal编程技术网

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();
}