【问题标题】:How do I conditionally throw an exception in a concise way?如何以简洁的方式有条件地抛出异常?
【发布时间】:2010-12-07 14:47:48
【问题描述】:

如果一个语句返回 false,我需要抛出一个异常,并且我试图想出一个简单、简洁的方法来做到这一点。有任何想法吗?我想做以下...

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

...但是 PHP 解释器不允许我这样做(语法错误),因为 'throw' 是一种语言结构。

有什么想法吗?我想要一个很短的班轮(请不要使用 if 语句)

【问题讨论】:

标签: php exception syntax throw


【解决方案1】:
<?
  // ...
  if (!oci_execute( $stmt )) throw new OracleException( $stmt );
  // ...
?>

是我想到的一切。但我使用 PHP 的时间不长。现在我发现了 Perl,这是一件很棒的事情,您可以使用您建议的构造等等。永远值得一试!

【讨论】:

  • (P.S. 我喜欢 perl,希望我能用 perl 写这个,但不能)
【解决方案2】:

你不能。但是,我实际上从未有过您所描述的那种特殊需求,这使我怀疑您在做一些奇怪的事情。或者至少不习惯。程序函数 (oci_execute) 的存在似乎支持了这一点。

我对 php 中的 Oracle 没有任何经验,但您可以改用 pdo-bindings 吗?这将为您提供一个更加面向对象的界面来使用。

【讨论】:

  • 我想使用 PDO,但它的 Oracle 支持是高度实验性的。我只想使用异常,而不是在发生错误时检查错误的返回值。 (如果有错误,oci 函数会返回 false,而不是告诉你有错误)
  • 在这种情况下,也许您可​​以创建一个包装类来隐藏过程接口并进行抛出?
【解决方案3】:

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

工作?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-24
    • 2018-09-28
    • 1970-01-01
    • 2023-02-06
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多