Antecedentes: Supongamos que tengo el siguiente PHP-obviamente incorrecto:PHP try-catch blocks: ¿pueden capturar tipos de arg inválidos?
try{
$vtest = '';
print(array_pop($vtest));
}catch(Exception $exx){}
Para que funcione con array_pop, $ vtest, obviamente, debe ser una matriz, no es una cadena. Sin embargo, cuando ejecuto este código, se muestra la advertencia. No quiero eso, solo quiero que el código falle silenciosamente.
Pregunta: ¿Hay algo especial sobre PHP try-catch en comparación con otros lenguajes que hace que esto no funcione?
responsabilidad: Sólo como referencia, es cierto que hay otras maneras de manejar esta situación en PHP, pero estos no son deseables. El objetivo aquí es evitar:
El truco "arroba":
$vtest = '';
print(@array_pop($vtest)); // <-- would like to avoid this
la conversión de tipos:
$vtest = '';
$vtest = (array)$vtest;
print(array_pop($vtest));
ver también: http://verysimple.com/2010/11/02/catching-php-errors-warnings-and-notices/ – dreftymac
véase también: http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/# error-handling – dreftymac
** Ver también: ** http://stackoverflow.com/questions/1241728/can-i-try-catch-a -warning – dreftymac