2010-12-07 6 views
0

Ich muss eine Ausnahme auslösen, wenn eine Anweisung false zurückgibt und ich versuche, eine einfache, prägnante Möglichkeit zu finden, dies zu tun. Irgendwelche Ideen? Ich wollte die folgende ...Wie kann ich bedingt eine Ausnahme konditionell auslösen?

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

... aber der PHP-Interpreter tun, wird es mich nicht zulassen (Syntaxfehler), weil ‚werfen‘ ein Sprachkonstrukt.

Irgendwelche Ideen? Ich würde gerne einen sehr kurzen Liner (keine wenn Aussagen bitte)

Antwort

0

können Sie nicht. Ich hatte jedoch nie genau dieses Bedürfnis, das du beschreibst, was mich zu dem Verdacht bringt, dass du etwas seltsames machst. Oder zumindest un-idiomatisch. Das Vorhandensein einer Prozedurfunktion (oci_execute) scheint dies zu unterstützen.

Ich habe keine Erfahrung mit Oracle von PHP, aber könnten Sie die pdo-bindings stattdessen verwenden? Dadurch erhalten Sie eine objektorientierte Oberfläche, mit der Sie arbeiten können.

+0

Ich würde gerne PDO verwenden, aber es ist Oracle-Unterstützung ist sehr experimentell. Ich möchte nur Ausnahmen verwenden, anstatt bei einem Fehler nach einem falschen Rückgabewert suchen zu müssen. (Oci-Funktionen geben false zurück, wenn ein Fehler vorliegt, anstatt Ihnen mitzuteilen, dass ein Fehler vorliegt.) – spudly

+0

In diesem Fall können Sie möglicherweise eine Wrapper-Klasse erstellen, die die prozedurale Schnittstelle ausblendet und das Werfen ausführt? – troelskn

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

ist alles, was mir in den Sinn kommt. Aber ich habe PHP nicht zu lange benutzt. Jetzt habe ich Perl entdeckt, was eine großartige Sache ist, und Sie können das Konstrukt, das Sie vorschlagen, und viele mehr verwenden. Immer einen Versuch wert!

+0

Das funktioniert, aber es ist genau das, was ich vermeiden wollte ... – spudly

+0

(PS Ich liebe Perl und wünschte, ich könnte dies in Perl schreiben, aber kann nicht) – spudly

0

Would

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

Arbeit?

+0

Das funktioniert, aber es ist genau das, was ich versuchte vermeiden... – spudly

Verwandte Themen