Tag: throw

抛出VS重新抛出:同样的结果?

在网上引用了很多文档,特别是在SO上,例如: 在C#中重新抛出exception的正确方法是什么? “扔e”之间应该有区别 和“扔;”。 但是,来自: http : //bartdesmet.net/blogs/bart/archive/2006/03/12/3815.aspx , 这段代码: using System; class Ex { public static void Main() { // // First test rethrowing the caught exception variable. // Console.WriteLine(“First test”); try { ThrowWithVariable(); } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } // // Second test performing a blind rethrow. // Console.WriteLine(“Second test”); try { […]

c#.net中throw和throw ex的区别

任何人都可以简单地告诉我throw和throw ex之间的区别吗? 我读到throw存储先前的exception,而不是获得此行。 我可以举例说明这个吗?

异步方法中的奇怪调试器行为

当我在代码中跨越断点时,我遇到了调试器的奇怪行为: public async Task DoSomeWork() { await Task.Run(() => { Thread.Sleep(1000); }); var test = false; if (test) { throw new Exception(“Im in IF body!”); } } 调试器进入if body。 值得注意的是,exception并没有真正被抛出,只是看起来就是这样。 因此,如果您将断点正确放置,则无法重现。 你必须把它放在上面,然后下降到if体来抓住它。 同样适用于任何类型的exception实例(以及显式null ),甚至return而不是throw 。 除此之外它即使我await删除行也有效。 我尝试从不同的PC运行此代码片段,因此它不是PC的麻烦。 另外我认为它是VS代码中的错误,并试图在JetBrains的Rider中运行它 – 结果相同。 我确定这是异步的事情,但它是如何明确起作用的?