Blocos try-catch do PHP: eles conseguem detectar tipos de argumentos inválidos?
Fundo: Suponha que eu tenha o seguinte PHP incorreto:
try{
$vtest = '';
print(array_pop($vtest));
}catch(Exception $exx){}
Para que ele funcione com array_pop, $ vtest deve obviamente ser um array, não uma string. No entanto, quando executo esse código, o Aviso é exibido. Eu não quero isso, só quero que o código falhe silenciosamente.
Questão: Existe algo especial sobre o try-catch do PHP em comparação com outras linguagens que fazem com que isso não funcione?
Aviso Legal: Apenas para referência, é verdade que existem outras maneiras de lidar com esta situação no PHP, mas estas são indesejáveis. O objetivo aqui é evitar:
O truque "arroba":
$vtest = '';
print(@array_pop($vtest)); // <-- would like to avoid this
Tipo de fundição:
$vtest = '';
$vtest = (array)$vtest;
print(array_pop($vtest));