Bloques PHP try-catch: ¿son capaces de capturar tipos arg no válidos?

Fondo: Supongamos que tengo el siguiente PHP obviamente incorrecto:

    try{
        $vtest = '';
        print(array_pop($vtest));
    }catch(Exception $exx){}

Para que funcione con array_pop, $ vtest obviamente debe ser una matriz, no 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 en PHP try-catch en comparación con otros lenguajes que hacen que esto no funcione?

Renuncia: Solo como referencia, es cierto que hay otras formas de manejar esta situación en PHP, pero no son deseables. El objetivo aquí es evitar:

El truco de "at-sign":

        $vtest = '';
        print(@array_pop($vtest)); // <-- would like to avoid this

Tipo de fundición:

        $vtest = '';
        $vtest = (array)$vtest;  
        print(array_pop($vtest));

Respuestas a la pregunta(4)

Su respuesta a la pregunta