异常

在php下面的异常,真的一言难尽啊。网上关于php关于异常的使用,也是寥寥无几。最近在学习java,看到书(java核心编程 卷1)写关于异常的使用建议,觉得还是不错。

为什么要使用异常?

传统的处理方式是返回一个特定的错误的答案,调用这个方法的方法对其进行分析。但是并不是在任何情况下都能够返回一个错误编码。有可能无法明确的将有效数据与无效数据区分。一个返回整形的方法就不能简单地通过返回-1表示错误,因为-1很可能是一个完全合法的结果

突然想到一点,吐个槽:php接收数据,偷点懒,这么写empty($_GET[‘a’]) 。但是如果传过来是0,那么程序就出错了。好像用mysqli的时候后,会有三个返回值,如果简单用的empty,也会有问题。

1 异常处理不能代替简单的测试,在java中,与执行简单的测试相比,捕获异常所花费的时间大大超过前者。

理解:不能总是依靠异常来处理问题,如果可以在通过简单的判断,就能够避免。比如,对于分页,page,size。如果没有传,那么可以直接赋值page =1, size = 0;

2 不要过分地细化异常

3 利用异常层次结构

理解:2,3感觉可以放在一起理解,使用合理的异常结构,合理的异常类。这个地方有点像是程序的扩展性,可读性和效率上的平衡,比如代码的长度,如果一个函数里面的代码过长,可以抽出一些内容作为一个方法,再去调用它。

4 不要压制异常

理解:捕获到异常而不去处理它。这样会压制异常。

5 在检测错误时,苛刻要比放任更好

理解:在有错误发生时,尽量还是抛出一个异常比直接抛出一个null或者自定义的类型要好。但是我觉得如果可以用默认值去处理,像1中分页的例子,而不是让程序中断。我觉得这样在某些情况下,会更好一点。

6 不要羞于传递异常

理解:未必非要在函数中捕获异常,也可以将它抛出,由高层次的函数通告用户发生错误。php好像没有这种写法,- -。

如果有理解不正确的地方,希望可以指出。

原文 

https://segmentfault.com/a/1190000018335330

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 异常

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址