C# 何时使用错误代码合适?

C# 何时使用错误代码合适?,c#,java,exception-handling,error-handling,error-code,C#,Java,Exception Handling,Error Handling,Error Code,在支持异常对象的语言(Java、C#)中,何时适合使用?在典型的企业应用程序中使用错误代码是否合适 许多著名的软件系统使用错误代码(以及相应的错误代码参考)。一些示例包括操作系统(Windows)、数据库(Oracle、DB2)和中间件产品(WebLogic、WebSphere)。错误代码有什么好处?使用错误代码的缺点是什么?错误代码是老生常谈。它们几乎毫无价值 错误代码的唯一可能值是它可以识别非常特定的情况。您可以为代码库中每个可能引发异常的点编写一个代码。这将允许您非常精确地缩小问题的范围

在支持异常对象的语言(Java、C#)中,何时适合使用?在典型的企业应用程序中使用错误代码是否合适


许多著名的软件系统使用错误代码(以及相应的错误代码参考)。一些示例包括操作系统(Windows)、数据库(Oracle、DB2)和中间件产品(WebLogic、WebSphere)。错误代码有什么好处?使用错误代码的缺点是什么?

错误代码是老生常谈。它们几乎毫无价值

错误代码的唯一可能值是它可以识别非常特定的情况。您可以为代码库中每个可能引发异常的点编写一个代码。这将允许您非常精确地缩小问题的范围

但是没有人关心细节的程度。谁想维持这样的混乱局面。它会给你留下类似“状态A和B,但不是状态S导致的状态C”的代码。要想弄清楚这到底意味着什么,付出的努力远远超过了它的价值。堆栈跟踪在告诉您问题发生在程序中的何处时更有价值


在异常成为一种普遍的技术之前,我学会了为计算机编程。我很高兴我们有例外

我想我从来没有在.Net中使用过错误代码,除了在一个情况下——当我创建一个控制台应用程序时,我知道会从另一个应用程序调用它。另一个应用程序必须知道控制台应用程序何时失败,以及出现了什么问题。因此,当您知道您的程序将被其他程序调用,并且您希望有一种结构化的方式让他们理解错误时,这将是一个合适的例子

也就是说,我当时是.NET的新手,从那以后就再也没有使用过错误代码


顺便说一句,作为一个Windows的家伙,能够输入一个错误代码并写出一篇KB文章是很好的,因此一个错误代码与良好的文档和查找它的能力相结合=用户的良好感觉

我经常在需要向用户传达错误时使用错误代码,因为它们可以国际化。例如,在编译器中,如果用户代码中存在错误,则可以在编译器后端发出错误信号,而前端可以将其本地化为特定于区域性/语言的字符串,供用户使用。然而,枚举可能比原始整数更好

我还使用它们为应用程序创建了一个“错误报告”框架。抛出异常时,会抛出一个错误代码,当异常冒泡时,会将错误代码(连同日志)发送到中央服务器。代码帮助组织数据库,以便我们可以检查与特定错误相关的日志

最后,正如在其他几个答案中提到的,错误代码对谷歌来说很简单,而且语言不可知(想想Windows错误代码/MS KB文章),因此,对于技术产品的最终用户来说,带有错误描述的错误代码可能更好


错误代码的概念是有用的,但在我看来,它们属于异常成员或IErrorReporter接口的参数,或者更多的是方法返回值。

对于web服务接口来说非常常见。返回带有描述的代码是非常简单和标准的

我同意大多数情况下都是老生常谈

我认为最大的缺点是代码的质量。当异常冒泡时,您必须添加更复杂的逻辑来管理错误代码,而不必使用方法参数或返回值

您还必须添加一个“IF”来检查返回的代码是否成功,而异常则直接进入错误处理块

C#,可能还有Java,支持更好的异常处理控制流,finally关键字,这比使用错误代码要好一些。异常对象可以包含任何级别的详细信息,当然远不止错误代码。因此,exception对象更实用,但您可能会遇到一种不常见的情况,在这种情况下,错误代码更合适


FWW,C++还支持异常对象。我不认为C++支持一个最终关键字(尽管新的C++是什么),但是在C++中,你也必须避免像在catch处理程序中返回的东西。

<强> < <强> >程序中,应该总是使用异常而不是错误代码。但是,异常不能传播到程序之外。任何时候错误必须离开程序,您都会收到错误消息或错误代码


对于简单的事情,总是由人工操作,没有代码的错误消息是好的。您可以说“找不到文件”,而不给它一个错误代码。但是,如果它可能是另一端的另一台计算机,那么您应该另外提供错误代码。当您将另一个系统更改为“未找到文件”时,您不想破坏它。

我是堆栈溢出的新手,但是

我认为,错误代码通常用于或有用于处理需要最终用户参与纠正的错误情况。如果您的代码将由另一个开发人员维护,那么异常就是最好的选择。但是,在出现问题的情况下:

  • 在应用程序正在运行的环境中

  • 通过应用程序与其他实体(web服务器、数据库、套接字等)之间的通信

  • 设备或设备驱动程序指示的(可能是硬件故障?)

那么错误代码可能是有意义的。例如,如果您的应用程序试图代表您的最终用户登录数据库,但无法访问数据库进行身份验证(数据库离线,电缆已拔出),则错误代码/说明组合可能会帮助最终用户纠正此问题

同样,在开发人员/工程师级别,谁将