自定义错误处理程序的问题

时间:2009-11-06 11:56:29

标签: php

请参阅我之前的帖子here。我做了相应的更改,但收到错误。 请帮我弄清楚这段代码中的错误。我的IDE(Aptana)在这段代码的许多行上给出了红色下划线:

<?php

/* Include dependency */
require_once("./Config/dbconfig.php");

abstract class dbconnection 
{
    var $conn;
    try
    {
        //Opens connection for a MySQL DB
        public function OpenConnection()
        {
            $conn = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) 
                or die (throw new DB_Exception_Handler('Cannot connect to DB: ' . $thisException->getMessage() . '.'));
            mysql_select_db(DB_NAME) or 
            die (throw new DB_Exception_Handler('Cannot connect to DB: ' . $thisException->getMessage() . '.'));

        }

        //Closes connection for a MySQL DB
        public function CloseConnection()
        {
            mysql_close($conn);

        }
    }
    catch(DB_Exception_Handler($thisException)
    {
        $thisException->ShowError();
    }
}

class DB_Exception_Handler extends Exception
{
    public function ShowError()
    {
        echo "<script>alert('". $this->getMessage() ."');</script>"; 
    }   
}
?>

1 个答案:

答案 0 :(得分:2)

我注意到的是你班级中的try catch块,但不是在方法内。 并在函数调用中抛出一个新的异常,该函数调用期望字符串或int(die())。

如果使用@符号表示错误消息,则两个数据库函数如果失败则返回false。

此外,您正在调用引用$ thisException上的函数,该函数在当前作用域中不存在。但这可能是因为并非所有代码都在这里。

<?php

/* Include dependency */
require_once("./Config/dbconfig.php");

abstract class dbconnection {
    var $conn;

        //Opens connection for a MySQL DB
        public function OpenConnection() {
            $conn = @mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 
            if(!$conn) {
                throw new DB_Exception_Handler('Cannot connect to DB: ' . mysql_error() . '.');
            }
            if(mysql_select_db(DB_NAME) == false) {
                throw new DB_Exception_Handler('Cannot connect to DB: ' . mysql_error() . '.');
            }

        }

        //Closes connection for a MySQL DB
        public function CloseConnection()
        {
                mysql_close($conn);

        }

}

class DB_Exception_Handler extends Exception
{
    public function ShowError()
    {
        echo "<script>alert('". $this->getMessage() ."');</script>"; 
    }   
}
?>