在PHP中如何处理错误情况更优雅?
假设现在有一个查询用户信息的函数getUserInfo()
,参数是userId,如果传进来的userId不符合格式要求,或者根据这个userId查不到对应的用户信息,这时候函数有2种处理方式:
- 返回
false
或者null
给调用者 - 抛出一个异常
以上两种方式哪种更好呢,为什么?有没有更好的错误处理方式?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
应该选择 抛出异常,因为使用返回 false 或者 null 的歧义太大。
比如,获取用户信息成功的情况下,返回的是一个数组,但是中途出错了,所以你返回了一个 false 或 null ,如果没有做判断,直接对返回信息进行
foreach
或者使用array_*
方法,就会造成调用方发生未知异常,所以除了抛出异常,还要严格限定输入、输出值,让调用方减少疑惑。补充:通过异常将错误的业务逻辑返回还可以解决深层次的问题,现在的业务流程往往都会有多层包裹,如果使用返回 false,null,void 这类值,还需要做层层判断,导致代码臃肿无比。而异常则可以选择性捕获终止业务等。
抛出异常,可以携带更多的信息
出入参类型,只要你不是还在用 php5,都可以严格限制输入和输出的类型.如上层答主所说.
出错返回,最好是返回异常.但在早期的实际开发中,如果明确不管啥问题,错了就是错了,而且上层不关心里面出了啥错,就直接返回一个 false.后面也改成了异常,因为你会发现,一个函数返回值可能有很多类型.如果没有文档留存,接手的人,看函数签名完全不知道你这个函数使用起来,会有哪一种情况没有处理掉.