.net 在这种情况下,我是否应该捕获并重新引用异常?

.net 在这种情况下,我是否应该捕获并重新引用异常?,.net,exception,.net,Exception,我在应用程序的UI层进行开发,在我发出请求后,会在业务层(或更低层)引发异常。异常如下所示 “System.Exception:在…处未返回任何数据” 显然有人做了一个简单的: if (...Rows.Count < 1) throw new Exception("No Data Returned"); 还是有更优雅的方式来处理这些问题 注意,我没有在UI层之外更改代码的选项,我确实希望经常遇到这种特殊的异常 提前谢谢 我真的认为这取决于这个异常在您通话的上下文中意味着什么。例如

我在应用程序的UI层进行开发,在我发出请求后,会在业务层(或更低层)引发异常。异常如下所示

“System.Exception:在…处未返回任何数据”

显然有人做了一个简单的:

if (...Rows.Count < 1)
    throw new Exception("No Data Returned");
还是有更优雅的方式来处理这些问题

注意,我没有在UI层之外更改代码的选项,我确实希望经常遇到这种特殊的异常


提前谢谢

我真的认为这取决于这个异常在您通话的上下文中意味着什么。例如,如果您要求按姓名或ID加载客户,则可以通过“找不到客户”对话框向用户报告异常。另一方面,如果您试图加载一些您认为应该存在的关键内容,并且出现异常,那么您必须做一些不同的事情


底线是,这实际上取决于问题的性质和严重性以及客户对UI的期望。

这有点主观,但我宁愿忍受处理
捕获(异常)的丑陋
在我的代码中,不要担心如果有人将错误消息更改为除
无返回数据以外的内容会发生什么情况

如果您无法在较低级别管理或更改代码,则您只能通知用户并邀请他重试操作或执行其他操作。 您不必向用户显示异常消息(如果不需要)。相反,如果可能的话,向业务层发送一条消息,其中包含有关调用的方法和传递的参数的信息可能会很有用

答案非常具体,取决于您的需求和应用程序的可用性

特别是在UI层,答案很大程度上取决于什么将使应用程序更可用,以及您有什么框架/系统来处理错误

通常,传播到目前为止的错误将分为两大类:

  • 用户应注意的问题和/或对可用性有重大影响的问题。这些问题通常是在决定下一步采取什么行动之前需要用户输入的问题(即,如果登录时找不到用户名,或者您试图显示的数据不可用)。通常情况下,您可能会报告适合您的系统的错误,而不是抛出新的异常

  • 用户不应意识到的问题,与系统正常运行无关的问题,或仅与系统管理员相关的问题等。。。这些类型的问题通常可以通过重新显示异常来更好地处理,因为通常您将有一个顶层,它在一个地方为系统管理员/等记录异常。。记录


你不能更改底层吗?我只能要求其他人更改它。我希望我可以接受倍数作为答案,但我想我必须接受在我的情况下提供最大价值的一个。对于任何投票认为“太本地化”的人:如果你将其理解为“当使用一个库时,我该如何实现异常处理?这个库是由一个在实现异常处理方面做得很差的人编写的”。我明白你的意思,但在我的例子中,用户对应用程序没有那么多的控制权。更多的是点击导航,而不是数据输入/请求。尽管如此,回答还是不错的。
try
{
    var myBusinessObject = MyBusinessMethod();
}
catch (Exception ex)
{
    if (ex.Message == "No Data Returned")
    {
        throw new NoDataException(ex.Message);
    }
    else
    {
        throw;
    }
}