“简而言之C#7.0”中的示例代码,第580页:
Task task = Task.Run(() => { throw null; });
try
{
task.Wait();
}
catch (Exception ex)
{ }
在我的VS2017中执行的与书中所述的方式不同。
从System.NullReferenceException
在IDE内部运行,第一行立即抛出Wait()
,而该示例建议在启动的线程中抛出该异常,并等待在那里,直到有人调用Result
或在Task
对象上读取Task
。在第277页中,对Task
类进行了简要说明,并且对线程池可以使用 的提及非常不清楚。我想在我的情况下不使用它,而是主线程正在执行lambda,因此生成未捕获的异常。我找不到关于如何或在何处配置线程池或def sim_time(self, record, datefmt=None):
return datetime.datetime(2000,1,2,3,4,5,678).strftime('%Y-%m-%d %H:%M:%S,%f')[:-3]
import logging
logging.Formatter.formatTime = sim_time
类的行为的提示。还是我错过了完全不同的东西?
答案 0 :(得分:3)
您可能会在抛出 异常时看到调试器中断:
这里的好处是对话框显示“抛出异常”,并且throw
语句以黄色突出显示。
默认情况下,调试器将在引发代码内的任何异常时中断,无论以后是否捕获到该异常(或者,如果禁用了“我的代码”,则在任何地方引发任何异常)。
您可以通过单击对话框中的“打开例外设置”链接或转到“调试”->“ Windows”->“例外设置”,然后取消选中“公共语言运行时例外”来更改此设置。
您还可以精确控制调试器将中断哪些异常。在“引发异常”对话框中,您也可以取消选中“引发此异常类型时中断”复选框,以防止调试器将来破坏该异常类型。
当您意识到要重新启用默认的一组异常时,“异常设置”顶部将提供一个方便的重置按钮: