Heim > PHP-Framework > Laravel > Hauptteil

Ratschläge zur Laravel-Entwicklung: Umgang mit Ausnahmen und Protokollierung

WBOY
Freigeben: 2023-11-23 10:08:59
Original
1569 Leute haben es durchsucht

Ratschläge zur Laravel-Entwicklung: Umgang mit Ausnahmen und Protokollierung

In der Laravel-Entwicklung sind Ausnahmebehandlung und Protokollierung sehr wichtige Teile, die uns helfen können, Probleme schnell zu lokalisieren und Ausnahmen zu behandeln. In diesem Artikel wird erläutert, wie mit Ausnahmen und Protokolldatensätzen umgegangen wird, um Entwicklern bei der besseren Entwicklung von Laravel zu helfen.

  1. Ausnahmebehandlung

Ausnahmebehandlung bedeutet, den Fehler abzufangen und entsprechend zu behandeln, wenn im Programm ein Fehler oder eine unerwartete Situation auftritt. Laravel bietet eine Fülle von Ausnahmebehandlungsmechanismen. Lassen Sie uns die spezifischen Schritte der Ausnahmebehandlung vorstellen.

1.1 Arten von Ausnahmen

In Laravel gibt es viele verschiedene Arten von Ausnahmen, von denen jede ihre eigene spezifische Bedeutung und Behandlungsmethode hat. Im Folgenden sind einige häufige Ausnahmetypen aufgeführt:

  • HTTP-Ausnahme: HTTP-Ausnahmen werden ausgelöst, wenn die angeforderte Route nicht existiert oder ein falscher HTTP-Antwortcode zurückgegeben wird.
  • Ausnahme „Modell nicht gefunden“: Bei Verwendung des Eloquent-Modells wird eine Ausnahme „Modell nicht gefunden“ ausgelöst, wenn beim Abfragen der Datenbank kein passender Datensatz gefunden wird.
  • Validierungsausnahme: Eine Validierungsausnahme wird ausgelöst, wenn die Formularvalidierung fehlschlägt und falsche Felder und Fehlerinformationen enthält.
  • Datenbankausnahme: Beim Abfragen der Datenbank mit dem Abfrage-Builder von Laravel oder Eloquent wird eine Datenbankausnahme ausgelöst, wenn ein Fehler auftritt.
  • Andere Ausnahmen: Zusätzlich zu den oben genannten Ausnahmen gibt es in Laravel viele andere Arten von Ausnahmen, wie z. B. Service-Ausnahmen, Warteschlangen-Ausnahmen usw.

1.2 Ausnahmebehandlungsprozess

Wenn eine Ausnahme auftritt, entscheidet Laravel basierend auf der Art der Ausnahme, wie damit umgegangen wird. Wenn es sich um eine häufige Ausnahme handelt, behandelt das Framework diese automatisch und gibt normalerweise eine gerenderte Fehlerseite oder eine JSON-Antwort zurück. Wenn es sich um eine Ausnahme eines anderen Typs handelt, wirft das Framework die Ausnahme an den Ausnahmehandler und behandelt sie entsprechend der Konfiguration des Ausnahmehandlers. Das Folgende ist der allgemeine Prozess der Ausnahmebehandlung:

1.2.1 Ausnahmeklasse erstellen

In Laravel können wir Ausnahmeklassen anpassen, um Ausnahmesituationen besser zu behandeln. Benutzerdefinierte Ausnahmeklassen müssen die Exception-Klasse erben. Das Folgende ist ein Beispiel für eine benutzerdefinierte Ausnahmeklasse:

namespace AppExceptions;

use Exception;

class CustomException extends Exception
{
    public function __construct($message = "", $code = 0, Exception $previous = null)
    {
        parent::__construct($message, $code, $previous);
    }

    public function render($request)
    {
        return response()->view('errors.custom', [], 500);
    }
}
Nach dem Login kopieren

Im obigen Code haben wir eine Ausnahmeklasse mit dem Namen CustomException erstellt und die Render-Methode überschrieben, um die Ausnahmebehandlung anzupassen.

1.2.2 Ausnahmehandler registrieren

In Laravel können Sie Ausnahmehandler über AppServiceProvider oder ExceptionHandler registrieren. Ausnahmehandler können alle Arten von Ausnahmen im System verarbeiten. Hier ist ein Beispiel für die Registrierung eines Ausnahmehandlers:

namespace AppProviders;

use IlluminateSupportServiceProvider;
use IlluminateContractsDebugExceptionHandler as ExceptionHandlerContract;
use AppExceptionsCustomExceptionHandler;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        //
    }

    public function register()
    {
        $this->app->bind(
            ExceptionHandlerContract::class,
            CustomExceptionHandler::class
        );
    }
}
Nach dem Login kopieren

Im obigen Code binden wir die ExceptionHandleContract-Schnittstelle über die Bindungsmethode an die CustomExceptionHandler-Klasse, um ein benutzerdefiniertes Ausnahmebehandlungsprogramm zu verwenden.

1.2.3 Ausnahmen behandeln

Im Ausnahmehandler können wir je nach Art der Ausnahme unterschiedlich damit umgehen. Normalerweise müssen wir Ausnahmen für die Nachverfolgung protokollieren und Ausnahmeinformationen an den Benutzer zurückgeben. Hier ist ein Beispiel für die Behandlung einer Ausnahme und die Rückgabe einer JSON-Antwort:

namespace AppExceptions;

use Exception;
use IlluminateHttpJsonResponse;

class CustomExceptionHandler implements ExceptionHandlerContract
{
    public function report(Exception $exception)
    {
        // 记录异常到日志中
        Log::error($exception->getMessage());
    }

    public function render($request, Exception $exception)
    {
        // 返回JSON响应
        return new JsonResponse([
            'message' => '操作失败,请稍后再试。',
            'error' => $exception->getMessage(),
        ], 500);
    }
}
Nach dem Login kopieren

Im obigen Code verwenden wir die Report-Methode, um die Ausnahme im Protokoll zu protokollieren, und die Render-Methode, um die JSON-Antwort zurückzugeben.

  1. Protokollierung

Protokollierung bezieht sich auf die Aufzeichnung der während des Betriebs des Systems generierten Informationen zur anschließenden Analyse und Verarbeitung. In Laravel können Sie die vom Framework bereitgestellte Log-Klasse verwenden, um die Protokollierungsfunktion zu implementieren. Lassen Sie uns vorstellen, wie die Protokollierung durchgeführt wird.

2.1 Protokolltreiber

Laravel bietet eine Vielzahl unterschiedlicher Protokolltreiber, wie Einzeldateitreiber, Tagesdateitreiber, Syslog-Treiber, Datenbanktreiber usw. Wir können den in der Datei config/logging.php verwendeten Protokolltreiber konfigurieren. Hier ist ein Beispiel einer Konfigurationsdatei:

return [

    'default' => env('LOG_CHANNEL', 'stack'),

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

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

];
Nach dem Login kopieren

Im obigen Code verwenden wir einen einzelnen Dateitreiber, um das Protokoll in storage/logs/laravel zu speichern. Melden Sie sich in der Datei an.

2.2 Protokollebenen

Die Protokolle von Laravel umfassen mehrere verschiedene Ebenen, wie z. B. Notfall, Warnung, kritisch, Fehler, Warnung, Hinweis, Info, Debug usw. Wir können die Protokollebene in der Datei config/logging.php konfigurieren. Die Standardeinstellung ist die Debug-Ebene. Das Folgende ist ein Beispiel für die Änderung der Protokollebene:

return [

    'default' => env('LOG_CHANNEL', 'stack'),

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

        'single' => [
            'driver' => 'single',
            'path' => storage_path('logs/laravel.log'),
            'level' => env('APP_LOG_LEVEL', 'debug'),
        ],
    ],

];
Nach dem Login kopieren

Im obigen Code verwenden wir die Funktion env, um den Wert der Umgebungsvariablen APP_LOG_LEVEL abzurufen und die Protokollebene festzulegen.

2.3 Protokollierung

In Laravel können wir die Log-Klasse verwenden, um Protokolle aufzuzeichnen. Das Folgende ist ein Beispiel für die Protokollierung:

use IlluminateSupportFacadesLog;

Log::info('This is an information log.');
Nach dem Login kopieren

Im obigen Code verwenden wir die Info-Methode, um ein Protokoll auf Informationsebene aufzuzeichnen.

Fazit

Dieser Artikel stellt die relevanten Inhalte der Ausnahmebehandlung und Protokollierung in der Laravel-Entwicklung vor. Ich hoffe, dass er für Laravel-Entwickler hilfreich sein wird. Im eigentlichen Entwicklungsprozess sollten wir die leistungsstarken Funktionen von Laravel voll ausnutzen, um die Entwicklungseffizienz zu verbessern und die Zuverlässigkeit und Stabilität des Systems sicherzustellen.

Das obige ist der detaillierte Inhalt vonRatschläge zur Laravel-Entwicklung: Umgang mit Ausnahmen und Protokollierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage