Exception 这是正确处理异常的有效示例吗?

Exception 这是正确处理异常的有效示例吗?,exception,language-agnostic,exception-handling,error-handling,Exception,Language Agnostic,Exception Handling,Error Handling,我一直在尝试阅读更多关于如何正确捕获/处理异常的内容,但我认为我还没有完全理解。事实上,我认为我越来越困惑,可能实现了糟糕的代码。我不想那样做 我一直在使用的示例设置: 移动设备呼叫WCF服务 WCF服务从数据库检索数据,如果数据库级别出现任何错误,将记录这些错误并向我发送电子邮件 WCF服务向移动设备发送数据(或异常的简要描述) 移动设备处理数据,如果发生任何错误,将错误抛出到UI层 对于一些异常,我创建了自定义的异常-服务异常、授权异常,这样我就可以正确地通知用户。如果服务遇到错误或发生IO

我一直在尝试阅读更多关于如何正确捕获/处理异常的内容,但我认为我还没有完全理解。事实上,我认为我越来越困惑,可能实现了糟糕的代码。我不想那样做

我一直在使用的示例设置:

  • 移动设备呼叫WCF服务
  • WCF服务从数据库检索数据,如果数据库级别出现任何错误,将记录这些错误并向我发送电子邮件
  • WCF服务向移动设备发送数据(或异常的简要描述)
  • 移动设备处理数据,如果发生任何错误,将错误抛出到UI层
  • 对于一些异常,我创建了自定义的异常-服务异常、授权异常,这样我就可以正确地通知用户。如果服务遇到错误或发生IOException,将通知用户“无法检索数据”

    但是,如果发生另一个错误,例如JSON错误或类似的“以防万一”错误,则该错误会被抛出到UI层,并被捕获为异常,因为我们并不需要用户知道发生了什么,而是发生了错误


    这是否适合异常处理?

    您是否发现任何问题

    一般来说,让用户保持工作状态是有意义的。这应该与对任何showtopper的适当处理相结合,以优雅地让用户失望,并抓住任何可能会使操作变得危险的事情。

    适当的异常处理总是a)依赖于应用程序,b)主观-因此没有确定的答案

    总的来说,我认为您需要执行以下所有操作:

  • 具体解决并适当处理所有可能的异常
  • 提供了一个全包,以防止非优雅终止
  • 如果存在可能影响的意外错误,请通知用户 他们的数据或使用情况(即-不要掩盖可能影响用户的错误)
  • 听起来你已经这么做了,所以我相信你有一个合理的方法