Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?
  • YardımLaravelPHP
  • php try catch bloğu hata yakalandıktan sonra devam etmek mümkün mü ?

for(){
    try{


}
catch(\Exception $e){
    // buraya herhangi bir seebepten düşerse döngü duruyor. Burada işini yaptıktan sonra devam etmesini sağlayabilir miyim ? 

}
}
  • caglar_kocak

    try {
        //...
        
    } catch (Throwable $e) {
       // burada throw $e yapmazsanız ya da burada yaptığınız işlem
       // döngüyü kıracak bir işlem yapmazsa, hata vermezse
       // döngü tamamlanıncaya kadar devam eder.
    }

Finally araştır 😃

try
{
    //hesaplanmak istenen ifade        
}
catch            
{
    //Bir hata türü tespit edilince verilmesi gereken mesaj
}            
catch            
{
    //başka Bir hata türü tespit edilince verilmesi gereken mesaj
}            
finally
{
    //her durumda çalıştırılacak olan kod parçası
}

    caglar_kocak Kaldığı yerden devam etmez genel de oradan elde edeceğin verileri try da alırsın finally de devam ettirirsin diye düşünüyorum

    bu olayı bir fonksiyona devretsem ve finally de tekrar o fonksiyonu çağırsam herhalde olur demi ?

    caglar_kocak
    anladığım kadarıyla yapmak istediğin işlemde try catch kullanman gereksiz gibi

      acTiv dögü içerisinde sırayla kişilere mail gönderiyorum. Mail herhangi bir sebepten gitmez ise oluşan hatayı catch içerisinde yakalayıp log kayıtlarına gönderiyorum ve mailin neden gidemediğini görüyorum. try catch kullanmadan nasıl yapabilirim ?

        caglar_kocak try catch kullanmadan foreach ile mail gönderdiğin fonksiyonu çalıştır ve o fonksiyon içerisinde kontrol et ne yöntem kullanıyorsun mail gönderirken mutlaka sonuç olarak bir dönüş alabiliyor olman gerek if ile dene

        $mail->email = "asd@mail.com"
        $mail->send();
        if( !$mail->isSuccess() )
        {
            Log::error($mail->email . " : Mail gönderilemedi!")
        }

        yani olabilir gibi

          foreach (/*...*/) {
              //...
              try {
                  //...
              } catch (\Exception $e) {
                 // hata olursa loglayın mesela
                 Log::error('Hata: '.$e->getMessage());
                 continue;  // döngüyü devam ettir
              }
              //...
          }

            acTiv
            bir json yapı kurdum. Henüz gönderilmesi denenmemiş mailler 2 , gönderilenler 1 ve gönderilemeyenler 0 , catch e düşerse tekrar fonksiyonu çağırıyorum. Şimdilik istediğim şey olmuş oldu. Tabi çok az bir maliyet getirdi. fazladan bir update işlemi yapıyorum.

            Aslında ilk olarak sizin dediğiniz gibi yapmaya çalıştım ancak mail gitmezse evet bir şey dönüyor. Ancak giderse boş dönüyor. Boş dönmesinden rahatsız oldum.

            caglar_kocak Benim bunu kullandığım projem var ve çalışıyor.
            Başka bir yerde hatanız vardır.

              caglar_kocak

              try {
                  //...
                  
              } catch (Throwable $e) {
                 // burada throw $e yapmazsanız ya da burada yaptığınız işlem
                 // döngüyü kıracak bir işlem yapmazsa, hata vermezse
                 // döngü tamamlanıncaya kadar devam eder.
              }

                mgsmus Hocam süpersin ya. Saygılar... Net işe yaradı. Çok teşekkür ederim.