当前位置: 首页 > 编程语言 > C#

使用bool(returnType)处理异常还是传递异常给客户端?分享

时间:2023-04-10 17:34:57 C#

使用bool(returnType)处理异常还是传递异常给client?我试图找出处理异常的最佳方法,我的应用程序有很多层并开始使用BOOL的返回类型,即如果失败则为False,如果成功则为True..这是在像SaveMyRecord(somerecord)这样的方法中这很有效;因为我正在传递值并且不期望返回任何东西,所以我可以使用返回类型bool来指示它是否成功。但是这让我觉得像GetMyRecord()这样的东西实际上返回了一种IQueryable,所以我不能用bool来告诉我它是否失败了。问题是我处理了很多错误,它们发生在尝试和捕获中,所以不希望客户端出现异常。也许有更好的方法,然后我考虑使用OUT参数,但这意味着我需要更改所有方法的签名并添加附加参数。也许我应该将异常传递回CLIENT并在那里处理它?是否有一些标准或任何文档来提供最佳实践?将异常冒泡到CLIENT并在那里处理。绝对传递其全部细节。大多数最佳实践几乎完全同意这一点,总是最终处理边界,在这种情况下是CLIENT,但在其他情况下可能是Web服务。仅当您想要记录它、添加更多信息或尝试从特定异常中恢复时才捕获。在每种情况下,您要么将原件作为内部抛出新异常,要么只按原样“抛出”原件,而不是像评论中指出的那样“抛出”这个问题几乎是重复的是的,你会发现很多关于SO的现有问题。我昨天刚回答了一个类似的问题你应该开始阅读异常设计指南然后,根据你的场景,你应该考虑其他因素,比如异常屏蔽。例如:如果您使用Web服务(ASMX或WCF)作为您的后端,您可能想要查看提高Web服务安全性并阅读异常处理部分。如果方法不能完成它的工作,它应该抛出异常。永不返回异常。推荐和考虑的最佳实践方法是使用异常。您可以(并且应该)阅读FrameworkDesignGuidelines(第2版),其中包括异常和try-parse模式的指南。使用返回码(数字或布尔值)有一些问题,其中两个最大的问题是:至于何时处理异常,您应该只在可以对它们做一些有意义的事情时才处理它们。始终处理异常以使客户端永远看不到它们的问题在于,您最终可能会处理不应该处理的异常,并在以后导致更多问题(例如实际丢失数据)。这个问题很好!不要为异常编码。在大多数情况下,假装它们从未发生过。我担心两个地方的异常:向用户显示错误反馈和资源管理(即在抛出异常时关闭打开的文件)。MS似乎喜欢的一个常见模式是有一个返回“int”的ComputeSomething()方法,以及一个采用整数引用并返回布尔值的TryComputingSomething()方法。后者将其计算存储在传入的变量中,并在成功时返回True;如果由于“预期”原因而失败,则为False。请注意,任一例程中的意外失败都可能引发异常。在某些情况下,使用不同的模式可能会有所帮助,并且例程接受遇到问题时调用的委托。该委托可以返回一个异常,或者导致底层例程返回false,或者可能做其他事情。请注意,当委托运行时,它将提供可以在捕获任何异常之前销毁的信息。例如,如果例程应该从文件中读取行并将字符20-37转换为日期,那么在出现解析错误时记录整个输入行可能会有所帮助。对于即将到来的代表,这是可以做到的;没有这样的,那就更难了。以上就是C#学习教程:使用bool(returnType)处理异常还是传递异常给客户端?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: