转载

异常

在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
正文到此结束
Loading...