2010-12-07 3 views
0

Je dois lancer une exception si une instruction renvoie false et que j'essaie de trouver une façon simple et concise de le faire. Des idées? Je voulais faire ce qui suit ...Comment lancer une exception de manière conditionnelle de manière concise?

<? 
    // ... 
    oci_execute($stmt) or throw new OracleException($stmt); 
    // ... 
?> 

... mais l'interpréteur PHP ne me laisse pas le faire (erreur de syntaxe) parce que « jet » est une construction linguistique.

Des idées? Je voudrais un très court doublure (pas si déclarations s'il vous plaît)

Répondre

0

Vous ne pouvez pas. Cependant, je n'ai jamais eu ce besoin particulier que vous décrivez, ce qui m'amène à penser que vous faites quelque chose d'un peu étrange. Ou au moins non-idiomatique. La présence d'une fonction procédurale (oci_execute) semble confirmer cela.

Je n'ai aucune expérience avec Oracle de PHP, mais pourriez-vous utiliser le pdo-bindings à la place? Cela vous donnera une interface plus orientée objet pour travailler avec.

+0

Je voudrais utiliser PDO mais son support Oracle est très expérimental. Je veux juste utiliser des exceptions au lieu de devoir vérifier une fausse valeur de retour quand une erreur se produit. (Les fonctions oci retournent false s'il y a une erreur au lieu de vous dire qu'il y a une erreur) – spudly

+0

Dans ce cas, vous pouvez peut-être créer une classe wrapper qui masque l'interface procédurale et effectue le lancement? – troelskn

3
<? 
    // ... 
    if (!oci_execute($stmt)) throw new OracleException($stmt); 
    // ... 
?> 

est tout ce qui me vient à l'esprit. Mais j'ai utilisé PHP pour pas trop longtemps. Maintenant, j'ai découvert Perl qui est une bonne chose et vous pouvez utiliser la construction que vous suggérez et bien d'autres. Ça vaut toujours le coup d'essayer!

+0

Cela fonctionne, mais c'est exactement ce que j'essayais d'éviter ... – spudly

+0

(PS J'aime perl et je voudrais pouvoir écrire cela en perl, mais ne peut pas) – spudly

0

Would

if !oci_execute($stmt) { throw new OracleException($stmt); } 

travail?

+0

Cela fonctionne, mais c'est exactement ce que je voulais éviter... – spudly

Questions connexes