【问题标题】:What's wrong with or throw new Exception?有什么问题或抛出新异常?
【发布时间】:2013-01-16 10:44:50
【问题描述】:

我在public function __construct()class 中使用此代码:

$this->mConnection = mysql_connect(BASE_DB_HOST,BASE_DB_USER,BASE_DB_PASS) or throw new Exception("Couldn't connect to database.");

BASE_DB_HOSTBASE_DB_USERBASE_DB_PASS 已定义。我收到以下错误:

解析错误:语法错误,/home/... 中的意外 T_THROW 在第 6

我是否允许使用带有异常的 or 构造?我该如何解决这个问题?

【问题讨论】:

  • $connection = mysql_connect(BASE_DB_HOST,BASE_DB_USER,BASE_DB_PASS) or die("Couldn't connect to database.");
  • 我想使用异常。有类似的可能吗?为什么这不可能?
  • throw是一个语句,or后面需要跟一个表达式。
  • 不要使用 mysql_ 函数,如果你使用 pdo 你会免费获得异常。
  • 关闭它为“过于本地化”完全没有意义,这很常见

标签: php exception throw parse-error


【解决方案1】:

另一种方法是在or 逻辑运算符之后的匿名函数中抛出异常。

$this->mConnection = mysql_connect(BASE_DB_HOST,BASE_DB_USER,BASE_DB_PASS) or call_user_func(function() { throw new Exception("Couldn't connect to database."); });

【讨论】:

    【解决方案2】:

    尝试像这样使用,让我知道它是否适合你-

    <?php
    function throwException() {
        throw new Exception("Couldn't connect to database.");
    }
    
    $this->mConnection = mysql_connect(BASE_DB_HOST,BASE_DB_USER,BASE_DB_PASS) OR throwException();
    ?>
    

    参考 - http://www.php.net/manual/en/language.exceptions.php#81960

    【讨论】:

      猜你喜欢
      • 2016-07-14
      • 1970-01-01
      • 2017-10-04
      • 2011-12-12
      • 1970-01-01
      • 2015-11-01
      • 1970-01-01
      • 2010-12-09
      • 2021-09-02
      相关资源
      最近更新 更多