php中的例外...为什么没有人使用它们?

时间:2011-03-15 09:40:07

标签: php exception-handling

我对php很新,当我在寻找如何使用套接字的例子时,我注意到它们都没有包含异常处理代码。

首先我认为也许php没有例外......但谷歌告诉我不然。有很多文章赞扬在php中使用异常(我来自Java& C#,我是一个转换过的)但是,在实例中,似乎没有人关心trys / catches。

是否因为php在以前的版本中没有例外?

示例(伪代码):

$fp = fsockopen($allTheNeededParams);
if(!$fp){
   //error handling
}
fwrite($fp, $out);//<-what if something goes wrong here? the socket is never closed?
fclose($fp);

在其他语言中,当你处理套接字时,你会看到try / catch到处都是。为什么不在php?

StackOverflow的两个例子:

谢谢你的时间!

2 个答案:

答案 0 :(得分:21)

PHP有一种以启示录为主题的错误处理方法:如果出现任何问题,脚本就会结束,并且它正在使用的任何资源(数据库连接,文件,套接字,内存)都会被运行时释放。这使得 对于处理此类问题至关重要,而不是Java或C#,其中服务器代码连续运行 - 在PHP中,未处理的错误条件意味着单个用户不方便,在Java或C#中它可能意味着资源泄漏最终会导致每个人都失去服务器。

当然,事实上PHP在其大部分功能库已经完成之后添加了异常,这意味着所有这些功能都使用返回代码和错误报告而不是异常。用异常替换错误不能在库级别完成(它会破坏过多的现有代码),而在代码级别,这是一项艰巨的任务,需要大量的样板来检测错误,同时对其进行静默,并抛出异常。 / p>

答案 1 :(得分:0)

  1. PHP首先没有考虑例外情况。
  2. 为了例外,您不使用例外。必须有支持和面向对象的代码。系统需要在构建时考虑整体情况。你必须知道他们做了什么,不做什么。