Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向UI传递错误消息的建议实践_C#_Wpf_Wcf_Error Handling - Fatal编程技术网

C# 向UI传递错误消息的建议实践

C# 向UI传递错误消息的建议实践,c#,wpf,wcf,error-handling,C#,Wpf,Wcf,Error Handling,您可以建议用什么方法来处理从API到UI的错误消息 在我工作过的其他项目中,我们向UI发送错误代码,然后UI从文件中读取相应的消息,该文件可能只是另一个类或resx。他们说这对本地化很有用 我在某个地方读到过,抛出异常是一种很好的做法。我只是担心如果UI端没有捕捉到错误,程序会崩溃 我将在UI中使用WPF,稍后将在服务中使用WCF。这是一个windows应用程序。我建议抛出正常的.NET异常,以防API端出现错误。使用错误代码的最大缺点是,根据应用程序层的组织方式(DAL->Business L

您可以建议用什么方法来处理从API到UI的错误消息

在我工作过的其他项目中,我们向UI发送错误代码,然后UI从文件中读取相应的消息,该文件可能只是另一个类或resx。他们说这对本地化很有用

我在某个地方读到过,抛出异常是一种很好的做法。我只是担心如果UI端没有捕捉到错误,程序会崩溃


我将在UI中使用WPF,稍后将在服务中使用WCF。这是一个windows应用程序。

我建议抛出正常的.NET异常,以防API端出现错误。使用错误代码的最大缺点是,根据应用程序层的组织方式(DAL->Business Logic->API->UI),传播和处理错误代码可能非常困难

对于异常,您可以在任何级别轻松地处理它们(通过使用
try-catch
construct),或者重新抛出(例如,当您只需要记录一个异常,而堆栈中还有一个代码应该自己处理它时),或者“吞下”它们(不过一般不建议这样做)

至于如何处理UI级别的错误,我会让它们一路“流动”,然后“装饰”它们(例如,通过显示带有一些细节和故障排除提示的模式对话框)。例如,如果您正在使用Web API,您可以从API返回适当的HTTP状态(401403500),并通过使用错误挂钩(如
$.ajaxError
)在客户机上处理它们,它将显示某种模式对话框。在这里,您并没有发明自己报告错误的方法,而是利用HTTP规范已经定义的内容(因此,很容易理解行为并对其作出响应)

我对WPF不太熟悉,但我认为应该有类似于WinForms中的
Application\u Error
的东西-一个事件处理程序,您可以通过向用户显示一些漂亮的模式对话框来检查错误并“修饰”它


希望这有帮助。

WinForms?ASP.NET?WCF?如果您有一个未处理的错误,那么您的程序有一个bug,或者遇到了它无法处理的不利条件(例如,没有更多内存),最好的情况是它可能会崩溃。@volpav,我将在UI中使用WPF,稍后将在服务中使用WCF。这是一个windows应用程序。@MartinLiversage,这是否意味着我可以扔掉API中的所有东西?我不必返回错误代码?我正在处理应用程序的后端,因此我需要提醒前端人员,在使用我的库时,他们不应该忘记捕获错误。@Gemini:在我看来,返回错误代码几乎总是一种不好的做法。在代码的每一层,您都必须检查这些代码,如果您忘记了这些代码,您的代码可能会进入不一致的状态。清理可能是一场噩梦等异常情况发生时抛出异常。如果需要清除或增加错误描述,则捕获并重新显示异常(不丢失堆栈跟踪)。在应用程序的顶层处理异常,如果进入无法处理的状态,则会很快失败。感谢您提供的提示。我将重新设计代码以进行异常处理。