Non è il problema della accessbilità della catch.
Codice PHP:
class A {
public function metodo()
{
throw new Exception();
}
}
try {
$x = new A();
$x->metodo();
} catch(Exception $e) {
var_dump($x);
}
Come vedi nel esempio sopra, l'oggetto "x" è accessibile nella catch pur essendo creato nella try.
Codice PHP:
class B {
public function __construct()
{
throw new Exception();
}
}
try {
$x = new B();
} catch(Exception $e) {
var_dump($x);
}
Se eccezione si verifica nel costruttore, l'oggetto non viene creato e quindi non può essere usato nella catch.