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

312
Visualizações
Laravel crea una excepción personalizada con parámetros y regresa como JSON

Quiero lanzar una excepción personalizada si la variable es nula y devolverla como JSON. He intentado así:

Controlador

 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 }

Excepción personalizada

 <?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); } }

Pero cuando trato de probarlo con cartero, el retorno que obtuve no es el mismo que escribí en NullException. Se vuelve así: Respuesta del cartero

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

0

En lugar de devolver el método de render de Exception , está devolviendo Exception . Y también estás pasando los argumentos en el orden incorrecto.

 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

En su caso, está devolviendo la excepción como respuesta en lugar de lanzarla. Por eso se muestra así.

Podría tener que lanzar la excepción sin el intento/atrapar:

 $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); }

El controlador de errores de laravel detectará la excepción y la renderizará.

EDITAR: O como señaló @ miken32, podría volver a lanzar la excepción para manejar otras excepciones:

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

ingrese la descripción de la imagen aquí

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