Maison  >  Questions et réponses  >  le corps du texte

Le bloc Try/Catch en PHP ne peut pas détecter les situations d'exception

<p>J'essaie d'exécuter cet exemple n°1, à partir de cette page : http://php.net/manual/en/lingual.exceptions.php</p> <pre class="brush:php;toolbar:false;"><?php fonction inverse($x) { si ($x) { throw new Exception('Division par zéro.'); } renvoie 1/$x ; } essayer { echo inverse(5) . echo inverse(0) . } catch (Exception $e) { echo 'Exception détectée : ', $e->getMessage(), "n"; } // Continuer l'exécution echo "Bonjour tout le monde" ; ?>≪/pré> <p>Cependant, le résultat que j'obtiens n'est pas attendu : </p> <pre class="brush:php;toolbar:false;">0.2 Erreur fatale : exception non interceptée « Exception » avec le message « Division par zéro ». inxxx : 7 Trace de pile : #0 xxx(14) : inverse(0) #1 {main} lancé dans xxx à la ligne 7</pre> <p>Les environnements de développement que j'utilise sont <code>UniServer 3.5</code> et <code>PHP 5.2.3</code></p>
P粉226413256P粉226413256447 Il y a quelques jours489

répondre à tous(1)je répondrai

  • P粉611456309

    P粉6114563092023-08-23 14:46:31

    Je viens de rencontrer exactement ce problème, j'ai l'impression d'avoir même copié le nom de l'exception mais je ne l'attrape pas. Cela s'avère être une erreur stupide de ma part, mais j'ai pensé publier ma situation ici au cas où quelqu'un d'autre serait dans la même situation.

    Mon exception s'appelle A dans mon espace de noms et le script s'appelle B dans un espace de noms. Le problème est que j'ai une AMyException qui est égale (en PHP) à BAMyException (car mon script s'appelle B dans l'espace de noms !). Tout ce que j'avais à faire était d'ajouter une barre oblique inverse (ou quel que soit son nom) avant le nom de l'exception pour la corriger afin qu'elle ressemble à ceci : AMyException

    répondre
    0
  • Annulerrépondre