Laravel'de hatalar iki şekilde işlem görür:
report ve
render. Report, hatanın rapor edilmesi, loglanması yani kısacası isminden de anlaşıldığı gibi kaydedilmesidir. Render ise hatanın ekrana basımı ile görevlidir.
Temel olarak bu işlevler
app/Exceptions/Handler.php dosyasında yer alır. Burada sizin ihtiyacınız olan
report. Bu dosyayı açıp bakarsanız report yöntemini görürsünüz:
/**
* Report or log an exception.
*
* @param \Exception $exception
* @return void
*/
public function report(Exception $exception)
{
parent::report($exception);
}
Burada
parent::report($exception); işleminden önce hataları yakalayıp ekstra işlem yapabilirsiniz.
Örneğin
errors tablosunu temsil eden
Error isimli bir modeliniz olsun. İçerisindeki alanlar da
file,
line,
code ve
message olsun. Yani hatanın meydana geldiği dosya, satır numarası, hata kodu ve hata mesajını veritabanında tutacağız.
Bu durumda:
/**
* Report or log an exception.
*
* @param \Exception $exception
* @return void
*/
public function report(Exception $exception)
{
Error::create([
'file' => $exception->getFile(),
'line' => $exception->getLine(),
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]);
parent::report($exception);
}
En kısa ve kolay yolu bu sanırım.