多次尝试捕获php数据库

时间:2014-12-12 02:18:31

标签: php exception-handling database-connection try-catch

所以我要做的就是在一个页面上试一试。这样做的原因是我正在运行我的代码的服务器似乎不喜欢多次尝试捕获。所以我想知道我应该在我的代码中插入什么来捕获数据库连接错误以及查询错误。我的代码对于这个页面来说有点长,所以我试图尽可能地缩短它并且仍然拥有我所有的尝试捕获。错误页面工作得很好。我觉得我唯一的问题是渔获物的位置

这是我到目前为止所得到的......

try{

    $db = @mysqli_connect('xxxx', 'xxxx', 'xxxx', 'xxxx');

        if(!$db){
        throw new aException(mysqli_connect_error());  
    }

    $strSQL = "SELECT * FROM blah blah blah";
    $result = mysqli_query($db, $strSQL);
    if(!$result){
        throw new bException(mysqli_error($db));  
    }

    $row = mysqli_fetch_array($result);

    echo '<select name="customer">';
    $custSQL = "select blah blah blah";
    $rs=mysqli_query($db,$custSQL);
    if(!$rs){
        throw new cException(mysqli_error($db));  
    }
     while($row=mysqli_fetch_array($rs)){ 

        if($row['cust_id'] == $customer){

            echo '<option selected="selected" value="'.$row[2].'">'.$row['cust_fname']. " " .$row['cust_lname'].'</option>';
        }
        else{
            echo '<option value="'.$row[2].'">'.$row['cust_fname']. " " .$row['cust_lname'].'</option>';
    }

        }

    mysqli_close($db);
    unset($db);

}catch(aException $e){ 

    header("Location: error.php?msg=" . $e->getMessage() . "&line=" . $e->getLine());
}
catch(bException $e){ 

    header("Location: error.php?msg=" . $e->getMessage() . "&line=" . $e->getLine());
}
catch(cException $e){ 

    header("Location: error.php?msg=" . $e->getMessage() . "&line=" . $e->getLine());
}

1 个答案:

答案 0 :(得分:0)

您可以在创建例外时使用界面。

interface myExceptionInterface{}

class aException extends \Exception implements myExceptionInterface {}
class bException extends \Exception implements myExceptionInterface {}
class cException extends \Exception implements myExceptionInterface {}

使用此界面捕获它。

try{
    throw new bException;
}catch(myExceptionInterface $e){ 
    header("Location: error.php?msg=" . $e->getMessage() . "&line=" . $e->getLine());
}

P.S。在同一范围内抛出和捕捉异常气味。