2015-07-20 21 views
7

Db aramaları ve ağ istekleri yapan bazı kodlarım var ve bunu bir try/catch içine aldım. Bir yolu var mıPHP istisnaları nasıl düzgün şekilde yakalanır (Laravel 5.1)

[Illuminate\Database\QueryException] 
[PDOException] 
[InvalidArgumentException] 

:

try { 
    // make db requests and network calls 
} catch (Exception $e) { 
    // handle exception 
} 

Yani, ben bu gibi özel durumlarla: Sorun İstisna yakalamak asla ve onlar ölümcül istisnalar gibi görünen kalmamasıdır Bu istisnaları yakalamak? Her olası istisna nesnesi için açık olması gerekiyor mu (yani birçok deneme/yakalama oluşturmalıyım) veya ölümcül olmayan istisnaları yakalamak için önerilen bir yol var mı?

+0

Bu try/catch deyimini nereye koydunuz? –

+0

Bu Laravel 4.2 veya 5+ mi? –

+0

5.1. Aptal ben, Exception sınıfından önce bir ters eğik çizgi kullanmadım. Şunu deneyeyim ... –

cevap

16

Ad alanlarınızı doğru şekilde kullandığınızdan emin olun.

Ad alanını sağlamadan bir sınıf kullanırsanız, PHP geçerli ad alanında sınıfı arar. Özel durum sınıfı, global ad alanında bulunur; bu nedenle, eğer ad-adı koda sahip bir kodda deneyin/yakalayın, ör. Denetleyiciniz veya model, yapmanız gerekir: Eğer böyle yaparsan

try { 
    //code causing exception to be thrown 
} catch(\Exception $e) { 
    //exception handling 
} 

herhangi istisnalar kaçırmak için hiçbir yolu yoktur.

Eğer App \ Http \ Kontrolörleri depolanan bir kontrolör kodunda istisna almak Aksi takdirde, sizin yakalamak App bekler \ Kontrolörler \ İstisna \ nesne atılmasına Http.

+0

Ah. Benim üzerimde dikkatsiz bir hata gibi görünüyor. Bunu deneyeceğim ve eğer çalışırsa bu cevabı seçeceğim. –

+0

Kasıtlı olarak bir rekor bulmak için Apps \ MyModel denedim, "Apps \ MyModel" sınıfı istisna bulunamadı. Her ikisi de başarısız FatalErrorException ve \ Exception, denedim. Herhangi bir fikir? –

İlgili konular