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));

questionAnswers(4)

yourAnswerToTheQuestion