0
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

Laravelのエラーハンドリングとデバッグについてまとめてみた

Last updated at Posted at 2024-06-24

はじめに

こんにちは、Webエンジニアの岩田史門(@SI_Monxy)です!
今回はLaravelのエラーハンドリングとデバッグについて記事を書いてみました!
改善点や修正点があれば、コメントにて優しくご指導いただけると嬉しいです!

概要

Laravelを使った開発において、エラーハンドリングやデバッグは重要なスキルです。本記事では、Laravelでのエラーハンドリング方法やデバッグテクニックについて紹介します。サンプルコードも交えて解説します。

エラーハンドリング

Laravelでは、app/Exceptions/Handler.phpでエラーハンドリングを行います。このファイルには、例外を報告したり、特定の例外をレンダリングするためのメソッドが含まれています。

カスタム例外ハンドラー

独自のエラーハンドリングロジックを追加するために、Handlerクラスを拡張することができます。

<?php

namespace App\Exceptions;

use Exception;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;

class Handler extends ExceptionHandler
{
    public function render($request, Exception $exception)
    {
        if ($exception instanceof CustomException) {
            return response()->json(['error' => 'Custom exception occurred'], 400);
        }

        return parent::render($request, $exception);
    }
}

カスタム例外クラスの作成

Laravelでは、独自の例外クラスを作成して特定のエラーハンドリングを行うことができます。

<?php

namespace App\Exceptions;

use Exception;

class CustomException extends Exception
{
    // 独自のプロパティやメソッドを追加可能
}

エラーログの設定

Laravelのconfig/logging.phpでエラーログの設定を行うことができます。

'channels' => [
    'stack' => [
        'driver' => 'stack',
        'channels' => ['daily'],
    ],

    'daily' => [
        'driver' => 'daily',
        'path' => storage_path('logs/laravel.log'),
        'level' => 'debug',
        'days' => 14,
    ],
],

デバッグテクニック

Laravel Debugbar

Laravel Debugbarは、アプリケーションのデバッグを容易にするパッケージです。

composer require barryvdh/laravel-debugbar --dev

config/app.phpに以下を追加します。

'providers' => [
    // ...
    Barryvdh\Debugbar\ServiceProvider::class,
],

'aliases' => [
    // ...
    'Debugbar' => Barryvdh\Debugbar\Facade::class,
],

dd()とdump()

Laravelには、dd()(dump and die)やdump()関数が用意されており、変数の内容をデバッグする際に便利です。

$users = User::all();
dd($users);

Logファサード

LaravelのLogファサードを使って、ログメッセージを簡単に記録できます。

use Illuminate\Support\Facades\Log;

Log::info('This is an informational message.');
Log::error('This is an error message.');

まとめ

これらの技術を活用することで、Laravelでの開発がよりスムーズになるでしょう。エラーハンドリングとデバッグを適切に行うことで、コードの品質を向上させることができます。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0