如何处理和传递低级错误给wpf gui?

时间:2009-07-30 09:29:30

标签: wpf user-interface error-handling

我有一个WPF gui,它有一个名为Manager的类的实例,它基本上管理某些通信和数据功能。

我在我的管理器中尝试/捕获块,但我想知道将其传达给GUI的最佳实践。

例如,点击按钮会生成onClick个事件,在该代码中我会调用Manager.DoProcessing()。麻烦的是,我如何知道DoProcessing是否遭到轰炸?我不想用另一个try catch来包围函数调用...

返回标识错误的ErrorType enum是否足够

enum ErrorType
{
NoError, TimeOut, DBCorrupt
}

等。或者这简单化了吗?应该补充的是,对Manager的调用将使用BackgroundWorker ...

进行操作

1 个答案:

答案 0 :(得分:1)

不要返回错误代码。 C#比那更好。很快你就会有一个方法需要返回一些东西:public Person GetPerson(int personID){}并且你不想开始使用out参数。如果GetPerson无法“获取”“人物”,那就是例外,因此你应该抛出异常。

您的Manager类是ViewModel吗?如果没有,请将其包装成一个。您的viewmodel应该catch异常(它发生的任何线程),并负责将其呈现给视图。一个选项是创建一个ErrorMessages的ObservableCollection(或字符串,但我会编写一个ErrorMessage类,其中包含消息,严重性,出现时间等)。然后你的XAML可以直接绑定到那个。每当catch块向集合添加ErrorMessage时,您的视图将自行更新。

如果您使用的是BackgroundWorker,那么您可能需要在RunWorkerCompleted事件中检查异常,而不是使用“catch”块。 This documentation explains how.