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[
}
?>