Tag: exception处理

C#相当于VB.NET的Catch ……当

在VB.NET中我经常Catch…When : Try … Catch e As ArgumentNullException When e.ParamName.ToUpper() = “SAMPLES” … End Try 有没有C#等同于Catch…When ? 如果可能的if我不想在catch使用if语句。

你有没有捕获exception,或抛出一个不会被捕获的exception?

我已经处理过我会抛出/重新抛出exception的实例,知道它周围的代码会捕获特定的exception。 但是,有没有时间你想要抛出exception,知道它不会被捕获? 或者至少,没有捕获exception? 除非处理权利,否则例外会立即停止申请? 所以我想我是否想要你故意让你的应用程序死掉?

任务未处理的exception

我试图了解在任务对象中抛出但从未处理过的exception发生了什么。 在MSDn上,据说: 如果您不等待传播exception的任务或访问其Exception属性,则在对任务进行垃圾回收时,将根据.NETexception策略升级exception。 所以我不太明白这些exception会以何种方式影响程序流程。 我认为这些exception应该在垃圾收集后立即中断执行。 但我无法设计这种行为。 在以下代码段中,抛出的exception不会显示。 \\Do something … Task.Run (()=> {throw new Exception(“Exception in the task!”);}); \\Do something else 请问,任何人都可以解释如何处理未处理的任务exception,以及它们如何影响程序流程。

在C#中,我如何知道要捕获哪些exception?

我已经习惯使用一般的catch语句,并且我以一般方式处理这些exception。 这是不好的做法吗? 如果是这样,我怎么知道可以抛出哪些特定exception以及我捕获哪些exception?

MSTest测试上下文exception处理

有没有办法可以使用TestContext或基础测试类上的其他方法来处理由MSTest框架处理的exception? 如果在我的一个测试中发生未处理的exception,我想旋转exception.Data字典中的所有项目并将它们显示给测试结果,以帮助我找出测试失败的原因(我们通常会将数据添加到帮助我们在生产环境中调试的exception,所以我想做同样的测试)。 注意:我没有测试exception是支持HAPPEN(我有其他测试),我正在测试一个有效的情况,我只需要查看exception数据。 这是我正在谈论的代码示例。 [TestMethod] public void IsFinanceDeadlineDateValid() { var target = new BusinessObject(); SetupBusinessObject(target); //How can I capture this in the text context so I can display all the data //in the exception in the test result… var expected = 100; try { Assert.AreEqual(expected, target.PerformSomeCalculationThatMayDivideByZero()); } catch (Exception ex) { ex.Data.Add(“SomethingImportant”, “I want to […]

在try / catch / finally中“finally”的目的是什么

语法将从语言变为语言,但这是一个普遍的问题。 这有什么区别…. try { Console.WriteLine(“Executing the try statement.”); throw new NullReferenceException(); } catch (NullReferenceException e) { Console.WriteLine(“{0} Caught exception #1.”, e); } finally { Console.WriteLine(“Executing finally block.”); } 还有这个…. try { Console.WriteLine(“Executing the try statement.”); throw new NullReferenceException(); } catch (NullReferenceException e) { Console.WriteLine(“{0} Caught exception #1.”, e); } Console.WriteLine(“Executing finally block.”); 我一直看到它被使用,所以我认为有一个很好的理由最终使用,但我无法弄清楚它是如何只是在语句之​​后放置代码,因为它仍然会运行。 有没有一个场景最终没有运行?

Application.ThreadException与AppDomain.UnhandledException

首先是一些背景:我有一个multithreadingWinForms应用程序,它与本机dll互操作。 这个应用程序有时会因未处理的exception而崩溃,我们正试图调查它为什么会发生。 为了方便它,我正在创建一个全局exception处理程序,我计划从中生成进程转储文件。 现在提出问题:截至目前,这个应用程序已经有Application.ThreadException处理程序,但它仍然与未处理的exception崩溃。 我正在考虑为AppDomain.UnhandledException添加一个处理程序,虽然我不确定它是否会有所帮助。 在此方案中是否存在任何可能未被Application.ThreadException捕获的未处理exception?

entity framework4.2:获取正确的数据库错误

在我的ASP.NET MVC 3应用程序中,我使用EF 4.2。 在我的数据库中,我对列有一个唯一的约束。 我尝试插入相同的数据,以便看到我得到的但我收到以下错误: 更新条目时发生错误。 有关详细信息,请参阅内部exception 在内部exception内部,我可以看到关于唯一约束的完整错误。 但是如何才能唯一地捕获此exception以告诉用户: 您再次输入相同的值。 这是我目前所做的事情: try { UpdateModel(conditionType, null, null, new string[] { “ConditionTypeId” }); _conditionTypeRepository.Save(); return RedirectToAction(“conditiontype”); } catch (Exception ex) { ModelState.AddModelError(“”, “There was an error while updating: ” + ex.Message); } 但这是一种通用方法。 我想做的是提供一个特定的消息。 有什么想法吗? 编辑: 我累了下面但是这次它没有抓住它: catch (SqlException ex) { if (ex.Number == 2627) { […]

如何确定是否正在处理.NETexception?

我们正在调查C#中的编码模式,其中我们要使用带有特殊类的“using”子句,其Dispose()方法根据“using”主体是正常退出还是exception退出而执行不同的操作。 据我所知,CLR会跟踪当前正在处理的exception,直到它被“catch”处理程序消耗为止。 但是,这些信息是否以任何方式暴露给代码访问并不完全清楚。 你知道它是否,如果是,如何访问它? 例如: using (var x = new MyObject()) { x.DoSomething(); x.DoMoreThings(); } class MyObject : IDisposable { public void Dispose() { if (ExceptionIsBeingHandled) Rollback(); else Commit(); } } 这看起来几乎像System.Transactions.TransactionScope ,除了成功/失败不是通过调用x.Complete()来确定,而是基于using正文是否正常退出。

c#中的全局exception处理(控制台应用程序)

可能重复: 控制台应用程序中的.NET Globalexception处理程 我已经在stackoverflow上阅读了很多关于全局exception处理的内容,但我找不到任何正确引用我的主题的内容。 我编写了一个控制台应用程序,它只在它们发生的方法中捕获exception。 完全没有投掷。 我想要的是全局exception处理。 我没有关于exception处理的基本指导,但除了那些基础知识之外不知道。 想象一下,应该有一个类处理这些exception(由不同类中的方法抛出)。 我还不需要任何错误记录或错误报告机制。 只需要基础知识(模式无论……)来实现这种全局处理。 感谢您的阅读!