exceções em php … por que ninguém as usa?

Eu sou muito novo para o php e, enquanto eu estava procurando exemplos de como usar sockets, notei que nenhum deles incluía o código de exception handling.

Primeiro pensei que talvez o PHP não tivesse exceções … mas o Google me disse o contrário. Há toneladas de artigos que louvam o uso de exceções no php (eu venho de Java & C #, eu sou um convertido), mas então, nos exemplos reais, ninguém parece se preocupar com trys / catch.

É devido ao fato de a php não ter exceções em versões anteriores?

Exemplo (pseudocódigo):

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

Em outras línguas, no momento em que você lida com os sockets que você vê, tente / pegue por todo o lugar. Por que não na php?

Dois exemplos do StackOverflow:

  • Socket question em Java (com exception handling)
  • Socket question em PHP (sem exception handling)

Obrigado pelo seu tempo!

O PHP tem uma abordagem baseada no apocalipse para o tratamento de erros: se algo der errado, o script acaba e todos os resources que ele estava usando (conexões de database, arquivos, sockets, memory) são liberados pelo tempo de execução. Isso torna menos crítico para lidar com esses problemas do que é em Java ou C #, onde o código do servidor é executado continuamente – no PHP, uma condição de erro não tratada significa que um único usuário está incomodado, em Java ou C # pode significar um vazamento de resources que acaba trazendo o servidor para baixo para todos.

E, claro, há o fato de que o PHP adicionou exceções ao longo do caminho depois que uma grande parte de sua biblioteca de funções já estava configurada em pedra, o que significa que todas essas funções usam códigos de retorno e relatórios de erros em vez de exceções. Substituir erros com exceções não pode ser feito no nível da biblioteca (quebraria o código existente demais) e no nível do código é uma tarefa árdua que envolve uma grande quantidade de indicadores para detectar o erro ao silenciá-lo e lançar uma exceção.

  1. O PHP não foi construído com exceções em mente, em primeiro lugar.
  2. Você não usa exceções por motivos de exceções. Deve haver suporte – e código orientado a objects. O sistema precisa ser construído com exceções em mente como um todo. E você deve saber o que eles fazem eo que eles não fazem.