I would like to emphasise that you can not rethrow an Exception inside a catch-block and expect that the next catch-block will handle it.
<?php 
try {
    throw new RuntimeException('error');            
} catch (RuntimeException $e) {
    throw $e;
} catch (Exception $e) {
    // this will not be executed[
}
?>