working try not fatal exceptions error custom catch all php mysql exception-handling conditional

not - try catch php mysql



¿Cómo funciona "hacer algo O MORIR()" en PHP? (4)

Funciona como otros lo han descrito.

En PHP, no use "morir", ya que NO genera una excepción (como lo hace en Perl). En lugar de lanzar una excepción correctamente de la manera normal.

no se puede atrapar en PHP, y no se registra; en su lugar, imprime el mensaje de forma desvergonzada e inmediatamente sale del script sin decirle nada a nadie ni darle la oportunidad de grabar el evento, volver a intentarlo, etc.

Estoy escribiendo una aplicación php para acceder a una base de datos MySQL, y en un tutorial, dice algo de la forma

mysql_connect($host, $user, $pass) or die("could not connect");

¿Cómo sabe PHP que la función falló para que ejecute la parte del dado? Supongo que estoy preguntando cómo funciona la parte "o". No creo haberlo visto antes


PHP''s or funciona como C''s || (que, por cierto, también es compatible con PHP, or simplemente se ve mejor y tiene una precedencia de operador diferente, consulte esta página ).

Se lo conoce como un operador de short-circuit porque saltará cualquier evaluación una vez que tenga suficiente información para decidir el valor final.

En su ejemplo, si mysql_connect() devuelve TRUE, PHP ya sabe que toda la instrucción se evaluará a TRUE sin importar a qué se evalúe die() y, por lo tanto, die() no se evalúa.

Si mysql_connect() devuelve FALSE, PHP no sabe si la instrucción completa se evaluará a VERDADERO o FALSO, por lo que continúa e intenta evaluar die() - finalizando el guión en el proceso.

Es solo un buen truco que aprovecha el camino or funciona.


Si la primera instrucción devuelve true , entonces la declaración completa debe ser true por lo tanto, la segunda parte nunca se ejecuta.

Por ejemplo:

$x = 5; true or $x++; echo $x; // 5 false or $x++; echo $x; // 6

Por lo tanto, si su consulta no tiene éxito, evaluará la instrucción die() y finalizará la secuencia de comandos.


$con=mysql_connect($host, $user, $pass) if(!$con) { die("could not connect"); } else { echo "Connected"; }