Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

239
Visualizações
Laravel create custom exception with parameters & return as JSON

I want to throw a custom exception if the variable is null and return it as JSON. I've tried like this:

Controller

try {
    $check_api_key = $attendance_libraries->check_api_key($this->request);
    if ($check_api_key == null) {
        throw new NullException(false, 'API Key Not Found', null, 500);
    }
} catch (NullException $e) {
    return $e;
} catch (\Exception $e) {
    // do something else           
}

Custom Exception

<?php

namespace App\Exceptions;

use Exception;
use Illuminate\Http\Response;

class NullException extends Exception
{
    public $is_success;
    public $message;
    public $code;
    public $data;

    public function __construct($is_success, $message, $code, $data = null, Exception $previous = NULL)
    {
        $this->is_success = $is_success;
        $this->message = $message;
        $this->code = $code;
        $this->data = $data;
    }

    public function render()
    {
        return response()->json([
            'success' => $this->is_success,
            'message' => $this->message,
            'data' => $this->data,
        ], $this->code);
    }
}

But when I am trying to test it using postman, the return I got is not the same as I wrote in NullException. It becomes like this: Postman response

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Instead of returning the render method of Exception , it is returning Exception . And you're also passing the arguments in the wrong order.

 Route::get('exception', function () { try { $check_api_key = null; if ($check_api_key == null) { throw new NullException( is_success: false, message: "API Key Not Found", code: 500 ); } } catch (NullException $e) { return $e->render(); } catch (\Exception $e) { } });
over 4 years ago · Santiago Trujillo Relatório

0

In your case you are returning the exception as a response instead of throwing it. That is why it is displayed like this.

You may have to throw the exception without trying/catching:

 $check_api_key = $attendance_libraries->check_api_key($this->request); if ($check_api_key == null) { throw new NullException(false, 'API Key Not Found', null, 500); }

Laravel's error handler will catch the exception and render it.

EDIT: Or as @miken32 pointed out, you could re-throw the exception to handle other exceptions:

 try { //... } catch (NullException $e) { throw $e; } catch (// other exceptions) { }

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda