2009-11-06 58 views
0

請參閱我以前的帖子here。我做了相應的更改,但出現錯誤。 請幫我弄清楚這段代碼中的錯誤。我的IDE(集錦)是給這個代碼的多行紅色下劃線:自定義錯誤處理程序的問題

<?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>"; 
    } 
} 
?> 

回答

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>"; 
    } 
} 
?> 
相關問題