Eğer getCode ile gelen veri doğruysa yani Exception kodunu throw ederken doğru giriyorsanız ve if koşullarında test ettiğinizde uyuyor ise attığınız kod bloğuna bakıldığında sorun olmaması gerekiyor. Bunun yanında exit; yerine for döngüsü içinde break; kullanmalısınız. Tüm execution'ı bitirmek yerine döngüyü sonlandırır. Yine 400 sırasında işlem devam etmiyorsa continue; deneyebilirsiniz. Bence getCode kısmında hep 500'lük kısma girip exit ile çıkıyor 400 olsa bile, echo ile debug yapın.