2012-02-25 5 views
6

tengo este código:ReflectionException no se puede atrapar?

namespace Some\Different\Name; 
     try { 
      $reflect = new ReflectionClass($class); 
X:   $instance = $reflect->newInstanceArgs($args); 
     } catch (ReflectionException $e) { 
      exit($e->getMessage()); 
     } 

y yo estoy probando tratando de hacer un ReflectionException ser lanzado. Y me da:

Fatal error: Uncaught exception 'ReflectionException' with message 'Class MyClass does not have a constructor, so you cannot pass any constructor arguments' in ... on line X.

¿Qué estoy haciendo mal?

PD: Sé por qué se lanza la excepción, solo quiero saber por qué no está atrapada.

+0

Rara vez. ¿Lo atrapará una 'captura genérica (Excepción $ e)'? –

+1

Agregue la traza inversa de ese error. – hakre

+0

@MikePurcell, no es así. – Shoe

Respuesta

6

Finalmente. Fue un problema de espacio de nombres. Por cierto, es extraño que PHP no notifique que está tratando de detectar una excepción de un tipo (ReflectionException) que no existe en el espacio de nombres actual.

Simplemente agregando el \ al \ReflectionException me ayudó porque ahora es capaz de encontrar el tipo de excepción que estoy buscando.

Otra solución sería añadir:

use \ReflectionException; 

justo después de la declaración de espacio de nombres.

+2

Hay carga automática, por lo que PHP no sabe de antemano qué excepciones traerá el futuro;) Y PHP le dijo que hay una excepción no detectada e incluso la nombró ... es fácil de supervisar cuando se trata de espacios de nombres. Ha sucedido a lo mejor de nosotros. – hakre