Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

como capturo la siguiente Exception

Estas en el tema de como capturo la siguiente Exception en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola amigos, como capturo la siguiente Exception PDOException in Connector.php line 55: SQLSTATE[HY000] [2002] No route to host...
  #1 (permalink)  
Antiguo 05/07/2017, 13:33
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.833
Antigüedad: 7 años, 1 mes
Puntos: 6
como capturo la siguiente Exception

Hola amigos, como capturo la siguiente Exception

PDOException in Connector.php line 55: SQLSTATE[HY000] [2002] No route to host
  #2 (permalink)  
Antiguo 05/07/2017, 15:57
Avatar de hhs
hhs
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.837
Antigüedad: 4 años, 3 meses
Puntos: 336
Respuesta: como capturo la siguiente Exception

usando un try/catch o en el Exception Handler https://laravel.com/docs/5.4/errors#...eption-handler
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 10/07/2017, 07:25
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.833
Antigüedad: 7 años, 1 mes
Puntos: 6
Respuesta: como capturo la siguiente Exception

hhs gracias por responder,

en App\Exceptions\Handler.php hice un dd:
Código PHP:
Ver original
  1. public function report(Exception $e)
  2.     {
  3.         dd($e);
  4.         return parent::report($e);
  5.     }


y obtuve
PDOException {#529 ▼
#message: "SQLSTATE[HY000] [2002] No route to host"
#code: 2002
#file: "/var/www/html/adminprovigN/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php"
#line: 55
+errorInfo: null
-trace: array:68 [▶]
}

La situación es la siguiente:
La aplicación se conecta a varias bases de datos pero en este momento hay una base que no esta disponible, necesito que la aplicación continué y que muestre un error de que la base de datos no esta disponible o no hay conexión. como puedo lograrlo?

leyendo un poco podría ser en el método render
Código PHP:
Ver original
  1. if ($e instanceof \PDOException) {
  2.            
  3.         }

haciendo de esa manera solo podría mostrar una pagina que muestre que no hay conexión con una base de datos, que continue el flujo de la aplicacion mostrando las otras conexiones a las bases de datos?

Última edición por Montes28; 10/07/2017 a las 07:42
  #4 (permalink)  
Antiguo 10/07/2017, 11:32
Avatar de hhs
hhs
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.837
Antigüedad: 4 años, 3 meses
Puntos: 336
Respuesta: como capturo la siguiente Exception

Código PHP:
Ver original
  1. if ($e instanceof PDOException) {
  2.             // ajax 505 json feedback
  3.             if ($request->ajax()) {
  4.                 return response()->json(['error' => 'Service Unavailable'], 505);
  5.             }
  6.  
  7.             // normal 505 view page feedback
  8.             return response()->view('errors.missing', [], 505);
  9.         }
  10.  
  11.         return parent::render($request, $e);
En el json o la vista puede pasar la información que requieras como el config con las otras conexiones.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 18/07/2017, 12:56
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.833
Antigüedad: 7 años, 1 mes
Puntos: 6
Respuesta: como capturo la siguiente Exception

hhs gracias por responder, estoy un poco confundido, te cuento un poco mi situación

Tengo una aplicacion desarrollada en laravel 5.1 la cual se conecta a 3 bases, como hago para capturar la excepción y que se muestre el resultado de las otras consultas, lo que no quiero es mostrar una pagina de erro


en el archivo .env tengo

DB1_CONNECTION=pgsql
DB1_HOST=localhost
DB1_DATABASE=base1
DB1_USERNAME=******
DB1_PASSWORD=*******

DB2_CONNECTION=pgsql
DB2_HOST=localhost
DB2_DATABASE=base2
DB2_USERNAME=******
DB2_PASSWORD=*******

DB3_CONNECTION=pgsql
DB3_HOST=localhost
DB3_DATABASE=base3
DB3_USERNAME=******
DB3_PASSWORD=*******

En el controlador HomeController tengo un método
Código PHP:
Ver original
  1. public function index()
  2.     {
  3.  
  4.         $datos1 = //se obtienen de la base1
  5.         $datos2 = //se obtienen de la base2
  6.         $datos3 = //se obtienen de la base3
  7.     return view('home',compact('datos1', 'datos2', 'datos3');
  8.     }

en la vista home muestro los datos

Código PHP:
Ver original
  1. @foreach($datos1 as $key => $valor )
  2.  
  3.  @endif
  4.  
  5. @foreach($datos2 as $key => $valor )
  6.  
  7.  @endif
  8.  
  9.  
  10. @foreach($datos3 as $key => $valor )
  11.  
  12.  @endif
  #6 (permalink)  
Antiguo 18/07/2017, 14:21
Avatar de hhs
hhs
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.837
Antigüedad: 4 años, 3 meses
Puntos: 336
Respuesta: como capturo la siguiente Exception

Eso no se puede recuerda que todo se hace en una sola petición así que si alguna de las conexiones manda un excepción se para la ejecución; si recuperas la excepción es solo para reportar que algo paso no es para controlar el flujo del programa.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.



La zona horaria es GMT -6. Ahora son las 18:39.