Le bloc Try/Catch en PHP ne peut pas détecter les situations d'exception
P粉226413256
P粉226413256 2023-08-22 15:19:37
0
1
492
<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粉226413256
P粉226413256

répondre à tous(1)
P粉611456309

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal