我们什么时候应该使用异常?

2023-10-01 17:42
首先,异常机制是在错误码机制之后才出现的。所以根据进化论,异常自然就避免了错误码机制的一些缺点。这些缺点包括。 先说句题外话:我在公司做了两件我认为非常有意义的事情。第一个是建立一个PHP电子邮件群,第二个是建立一个Hi群。目前,两者都有超过 500 名 phpers。里面。我始终认为,搭建一个交流平台,让学生能够顺畅、简单地交流,是营造积极的技术学习氛围的基础和前提。这是防止每个人的问题成为其他人的问题的最直接的方法。好处。 (后记:很多人问邮件群地址,真的很抱歉,这个邮件群是公司内部邮件群,Hi也是公司内部邮件群,谢谢) 昨天有同事在邮件群里问了一个问题: 什么时候应该在 PHP 中使用 Exception?它的表现如何? 这个问题可以说是一个长期争论的经典问题。我来分享一下我个人的看法。 异常及其对应的错误码(或状态码)有哪些优点和缺点,我们应该如何使用它们? 错误代码 首先,异常机制是在错误代码机制之后才出现的。根据进化论,异常自然避免了错误码机制的一些缺点。这些缺点包括。 1、错误信息不充分 函数只能有一个返回值(当然Lua可以返回多个,但实际上相当于PHP中返回一个数组)。我们见过的最常见的函数描述是:成功时返回***,发生错误时返回。然而,FALSE,导致函数错误的原因可能有很多,而且错误的类型甚至更多。简单的 FALSE 无法告诉调用者具体的错误消息。 因此,我们看到了一些这样的函数描述:如果返回值大于0,则表示成功状态码,如果返回值小于0,则表示错误状态码。 然而,这个要求函数是返回一个整数(或数字)。对于其他一些函数,我们不能通过 0、>0、<0 来判断,即使这样,我们仍然需要使用返回的错误代码和一些预定义的宏(或者像 strerror() 这样的调用)来获取具体的、人性化的信息。 - 可读的错误消息。因此,有一些函数使用全局错误代码和错误信息来保存特定的错误信息。这时,我们看到这样的函数描述:成功返回***,发生错误时返回FALSE,错误代码存储在全局变量$errno中(至少大多数Linux库函数是这样描述的) , 哈哈)。 好吧,这个方法确实有效,但是你不觉得它很难看吗? 2. 添加错误状态代码可能需要更改函数签名 假设你写了一个函数。这个功能非常简单。你认为它永远不会出错,所以你声明为(以C语言为例,PHP没有返回类型提示): 无效虚拟(){} 但后来你慢慢修改了这个功能,赋予了它更多的功能。此时,该功能可能会失败。现在您根本无法向该函数添加错误返回代码。 有人可能会说PHP没有返回值类型限制,但是想想PHP的构造函数。构造函数没有返回值。当发生错误时,如果不使用异常,我想你只能选择die,或者使用2中的方法,由于错误而继续执行。 另外,在一个好的软件系统中,返回类型实际上是约定俗成的。当使用的所有函数都不检查返回值时,您仍然无法向该函数添加错误返回码。 3. 错误状态码可以忽略 当您的函数之一出错并返回错误状态代码,但调用者未检测到返回值时,会发生什么情况? -_#。一方面,到处测试返回状态代码会导致代码非常混乱。 ,,丑陋的: getMessage()); } 更方便的是,如果您的代码只是中间层并且调用者将负责处理错误,您甚至可以简单地编写:

相关推荐