c# - 如何显示来自非 GUI 相关类的 GUI 应用程序的错误消息?

标签 c# .net error-handling

我知道我可以使用类似 MessageBox.Show("some error") 的东西,但我说的是在我的代码中发生在某个较低级别的错误,没有业务抛出MessageBox 或任何其他 GUI 元素。

我正在构建一个 RSS 客户端,我有一个管理各种提要的类(比方说 FeedManager),此时它只是一个列表的包装器。现在这个类调用另一个类来访问数据。因此,只要 GUI 中有人想要保存提要,GUI 只需调用 FeedManager.SaveFeeds() 即可处理提要并将它们保存到文件、数据库等。所以我尝试保存到文件并且发生了一些不好的事情(我编码的东西或异常)。所以现在我至少有 3 层深度,GUI -> FeedManager -> SomeDataAccessLayer,我想向用户显示一条消息像“嘿,找不到那个文件”或“你没有权限写入那个位置”,等等......

我该怎么办?从数据访问层抛出一个 MessageBox 公然将该组件耦合到 GUI。让所有方法返回带有任何错误消息的字符串似乎也很愚蠢。

最佳答案

非 GUI 代码确实不应显示 MessageBox。

标准方法是抛出异常。

您的 GUI 应该使用 try/catch block 围绕对 SaveFiles() 的调用并采取适当的操作,例如显示消息框。

也许您忽略了一点,这正是异常的用途:通过(多个)方法调用传达错误。

关于c# - 如何显示来自非 GUI 相关类的 GUI 应用程序的错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6282238/

相关文章:

c# - Chrome 显示 keyCode 未定义

c# - 从方法表达式获取具体类型

c# - 下拉列表 selectedindex 更改后显示隐藏的文本框和标签

.net - Entity Framework - 模型生成错误 : '' ', 十六进制值 0x1F,是无效字符

.net - .NET 中的错误代码/消息管理方法

c# - 向外部 DLL 添加强名称/签名?

sql - 如何在更新时捕获失败的记录并继续 Oracle 中的其余记录?

c# - 将 Angularjs 表达式/变量作为路由参数传递给 asp.net mvc 操作链接

PHP自定义错误页面

javascript - 由于未授权而尝试 appendChild 脚本元素失败时抛出什么错误