Claro, todo lo que esta dentro del try {} va a ser cachado en caso de ser un tipo de excepcion declarada, ve el siguiente ejemplo:
Código PHP:
Ver original// Excepciones de ejemplo
class MyException1 extends Exception{}
class MyException2 extends Exception{}
class MyException1_2 extends MyException1{}
// Funciones de ejemplo
function foo1() {
throw new MyException1("foo1");
}
function foo2() {
throw new MyException2("foo2");
}
function foo1_2() {
throw new MyException1_2("foo2");
}
function foo3() {
foo1_2();
}
// Captura todo (porque captura Exception)
try {
foo1();
} catch (Exception $e) {
echo $e->getMessage();
}
// Captura solo MyException1
try {
foo1();
} catch (MyException1 $e) {
echo $e->getMessage();
}
// Captura tambien porque MyException1_2 hereda a MyException1
try {
foo3();
} catch (MyException1 $e) {
echo $e->getMessage();
}
// No captura (Error fatal) porque MyException2 hereda directo a Exception
try {
foo2();
} catch (MyException1 $e) {
echo $e->getMessage();
}
Para que entiendas de una mejor forma como se capturan las excepciones.