在C#程序的调用堆栈中找不到处理程序时,正确的方法是什么

时间:2013-09-22 12:13:09

标签: c# .net exception-handling

我问这个问题,因为我很快就会专注于错误处理,但即使我作为初级C#开发人员已经有近7个月的时间,这也是我想不到的。

正如标题所说,我想知道处理异常形式的正确方法是什么,没有适当的错误处理程序。前段时间我听到我的一位同事正在讨论一般处理吮吸案例场景的通用异常处理程序(无论可能意味着什么)。但是,我做了一些谷歌搜索我没有找到关于这样的事情的一些信息。

所以我的问题是 - 如何处理这些异常并且我的子问题是 - 是否真的有一种称为通用异常处理程序的东西?

3 个答案:

答案 0 :(得分:5)

  

是否真的有一种称为通用异常处理程序的东西?

是的 - 这就是他们所谓的处理程序,它记录异常并在退出程序之前存储尽可能多的信息。设置这样的处理程序的一种方法是在AppDomain对象的UnhandledException事件中添加处理程序。

在.NET意义上它既不是“通用”也不是“处理程序”,因为不涉及泛型类型,并且因为处理程序可以采取的操作相当有限。与可以阻止或重新抛出它处理的异常的真实处理程序不同,最后机会“处理程序”可以看到抛出的内容,但不能导致执行继续。

答案 1 :(得分:1)

未捕获的异常将导致应用程序崩溃。您可以订阅AppDomain.UnhandeledException事件以获得有关此类情况的通知,在日志中写一些消息,e.t.c。

但是,您无法阻止应用程序在该处理程序中崩溃,因为执行可能无法继续执行。

答案 2 :(得分:1)

处理计划外异常的方法是捕获它们,将它们记录到某个地方,开发人员会检查它们是否存在错误,然后以正在尝试的方式中止操作。这可能意味着您向用户显示错误消息,关闭应用程序或让ASP.NET等框架处理异常(它将通过显示一般错误页面来“处理”它)。

由于错误,总会发生计划外异常。您需要一个策略来处理(如上所述)。

“通用”异常处理程序将是catch (Exception ex)。换句话说,一个包罗万象。这不是一个官方术语,但这就是这个人的意思。