长时间运行App,如何处理错误?

时间:2009-11-25 09:21:29

标签: c# .net error-handling usability

我必须实现一个信息终端。我选择dot.net,终端只是一个触摸板。 所以这个系统运行7天24小时。

所以我称之为Web服务,显示数据,显示网站内容。很多事情都可能出错。

您对这种情况有什么建议吗? try中的每个函数都可以捕获? AppDomain.CurrentDomain.UnhandledException事件?

感谢Andreas

2 个答案:

答案 0 :(得分:2)

基本上,你应该尽快处理任何错误 - 所以如果你正在调用webservice包装try / catch块中的所有调用并在那里处理错误 - 你可以,例如,记录确切的错误,聚合许多与webservice相关的异常,更通用,DataSourceFaultException(仅作为名称),然后由UI接收,UI将能够轻松确定,因为通信失败,它无法显示请求的信息,并选择重试,通知用户或做任何其他事情。

然而 - 对于长时间运行的应用程序,您将需要处理更多错误。其中很多都不容易预测,因为它们不一定与任何特定的调用有关 - 你可能会耗尽内存,递归可能导致堆栈溢出,系统计时器可以达到它的最大值并从头开始等。

您不应该在每个方法中处理这些错误,因为它只会损害代码的可读性并且容易出错。这些错误最好由UnhandledException事件处理。但是,您必须记住,当异常到达UnhandledException事件时,您无法假设应用程序的状态 - 错误可能已损坏某些(甚至全部)内部状态。因此,当出现这种情况时,最好尝试创建错误日志并优雅地重新启动应用程序(不一定是整个应用程序 - 也许可以重新初始化应用程序的状态 - 如果是这样,那也是一个有效的选项。但是,你必须是意识到你无法从某些错误中恢复并处理这种情况。)

答案 1 :(得分:0)

取决于。

如果您可以在函数中正确处理异常 - 处理它。如果不是 - 创建一个全局异常处理程序来通知用户或记录它。