How to Handle Exception in Laravel 10 Example

Howdy, Laravel enthusiasts! Navigating the treacherous waters of errors and exceptions in your Laravel 10 application? Fear not, for today, we embark on a journey to master the art of handling exceptions in Laravel 8/9/10.

In this article, we'll learn about how to efficiently manage errors using try and catch in laravel 8, laravel 9, and laravel. Also, you can get an exception message.

Exception handling is a crucial aspect of building reliable and maintainable applications. In this guide, we'll explore 10 examples, providing you with practical insights into Laravel's exceptional error management.

Let's gear up and make our Laravel 10 applications bulletproof together with the help of exception handling.

Here's a step-by-step guide with code snippets for handling exceptions in Laravel:

Example 1: The Basics of Exception Handling in Laravel

Laravel provides a dedicated App\Exceptions\Handler class for handling exceptions. You can customize this class to define how exceptions are reported and rendered.

app/Exceptions/Handler.php

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

class Handler extends ExceptionHandler
{
    public function report(Exception $exception)
    {
        parent::report($exception);
    }

    public function render($request, Exception $exception)
    {
        return parent::render($request, $exception);
    }
}

 

Example 2: Catching Specific Exceptions

Catch specific exceptions by adding catch blocks inside the render method. This allows you to handle different exceptions differently.

public function render($request, Exception $exception)
{
    if ($exception instanceof CustomException) {
        return response()->view('errors.custom', [], 500);
    }

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

 

Example 3: Creating Custom Exceptions

Create custom exceptions by extending the base Exception class. This enables you to throw and catch exceptions tailored to your application.

// app\Exceptions\CustomException.php

use Exception;

class CustomException extends Exception
{
    // Custom logic if needed
}

 

 

Example 4: Handling Validation Exceptions

Customize the way Laravel handles validation exceptions by modifying the render method.

public function render($request, Exception $exception)
{
    if ($exception instanceof ValidationException) {
        return response()->json(['error' => 'Validation failed'], 422);
    }

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

 

Example 5: Dealing with Database Query Exceptions

Handle exceptions related to database queries by catching specific database-related exceptions.

use Illuminate\Database\QueryException;

public function render($request, Exception $exception)
{
    if ($exception instanceof QueryException) {
        return response()->json(['error' => 'Database error'], 500);
    }

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

 

Example 6: Exception Logging for Debugging

Set up exception logging to capture detailed information about exceptions for debugging purposes.

public function report(Exception $exception)
{
    \Log::error($exception);

    parent::report($exception);
}

 

Example 8: Working with API Exceptions

Handle exceptions in Laravel API routes and return meaningful JSON responses.

public function render($request, Exception $exception)
{
    if ($request->expectsJson()) {
        return response()->json(['error' => 'Something went wrong'], 500);
    }

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

 

 

Example 9: Using the Rescue Method

Utilize the rescue method for catching exceptions and executing specific actions.

try {
    // Code that might throw an exception
} catch (Exception $e) {
    rescue(function () use ($e) {
        // Custom handling for the exception
        Log::error($e);
    });
}

 

Example 10: try-catch

Simple try-catch example in Laravel. If an exception occurs during the query, we'll catch it and handle it gracefully.

app/Http/Controllers/ExampleController.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Database\QueryException;

class ExampleController extends Controller
{
    public function handleExceptionExample()
    {
        try {
            // Attempting to perform a database query
            $result = \DB::table('nonexistent_table')->get();
            
            // ... rest of your code ...

            return response()->json(['data' => $result]);
        } catch (QueryException $e) {
            // Catching specific database-related exception
            return response()->json(['error' => 'Database error: ' . $e->getMessage()], 500);
        } catch (\Exception $e) {
            // Catching a generic exception
            return response()->json(['error' => 'Something went wrong: ' . $e->getMessage()], 500);
        }
    }
}

 

Conclusion:

And there you have it, Laravel artisans! Exception handling is a skill that elevates your application's reliability. By mastering these 10 examples, you're equipped to tackle various error scenarios in your Laravel projects.

 


You might also like:

techsolutionstuff

Techsolutionstuff | The Complete Guide

I'm a software engineer and the founder of techsolutionstuff.com. Hailing from India, I craft articles, tutorials, tricks, and tips to aid developers. Explore Laravel, PHP, MySQL, jQuery, Bootstrap, Node.js, Vue.js, and AngularJS in our tech stack.

RECOMMENDED POSTS

FEATURE POSTS