1 перевыброс ошибки работает, если это просто код try{ echo "Try |"; throw new \Exception('tst'); }catch(\Throwable $t) { echo "catch |"; throw new \Exception('asdasdasdasd'); }finally{ echo "finally"; } 2 если этот же код в методе c return, то перевыброса не будет function test(){ try{ echo "Try |"; throw new \Exception('tst'); }catch(\Throwable $t) { echo "catch |"; throw new \Exception('asdasdasdasd'); }finally{ echo "finally"; return 2; } } echo test(); заставляем ф-ю таки выбросить исключение function test(){ $throwException = fn() => 0; try{ echo "Try |"; throw new \Exception('tst'); }catch(\Throwable $t) { $throwException = function(){ throw new \Exception('asdasdasdasd'); }; echo "catch |"; throw new \Exception('asdasdasdasd'); }finally{ echo "finally"; $throwException(); return 2; } } echo test();