簡體   English   中英

捕捉mysql連接錯誤

[英]Catching mysql connection error

所以我有簡單的代碼:

try{
    $mysqli = new mysqli($sql_login['host'], $sql_login['user'], $sql_login['password'] , $sql_login['database'], $sql_login['port'] );


    if($mysqli->connect_errno){
        throw new Exception("Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error);
    }

}
catch (Exception $e) {
    echo 'Exception: ',  $e->getMessage(), "\n";
}

問題是php返回錯誤以及異常。 是否有類似Java中的throw和throws的東西?

您可以從安裝自己的錯誤處理開始。 一種將PHP錯誤轉換為異常的方法。 在腳本的開頭執行此操作。 像這樣:

/*
|--------------------------------------------------------------------------
| Alternative error handler
|--------------------------------------------------------------------------
|
| See: http://php.net/manual/en/function.set-error-handler.php
|
*/
function my_error_handler($errno, $errstr, $errfile, $errline)
{
    if (!(error_reporting() & $errno))
    {
        // This error code is not included in error_reporting
        return;
    }
    throw new ErrorException( $errstr, $errno, 0, $errfile, $errline );
}
ini_set('display_errors', FALSE);
set_error_handler("my_error_handler");

現在,您可以將異常用作主要的錯誤處理機制。 現在,您需要的是在腳本中正確的位置捕獲異常並自己顯示錯誤。

您可以擴展此機制以包括斷言處理:

/*
|--------------------------------------------------------------------------
| Assert handling
|--------------------------------------------------------------------------
|
|   See: http://php.net/manual/en/function.assert.php 
|
*/
function my_assert_handler($file, $line, $code)
{
    throw new Exception( "assertion failed @$file::$line($code)" );
}
assert_options(ASSERT_ACTIVE,     1);
assert_options(ASSERT_WARNING,    0);
assert_options(ASSERT_BAIL,       0);
assert_options(ASSERT_QUIET_EVAL, 0);
assert_options(ASSERT_CALLBACK, 'my_assert_handler');

並且只接受PHP不是Java或C ++。 這是一個不一致的混亂。

您可以使用PHP的set_error_handler()

在通話前加一個@符號以進行連接。 這樣可以消除錯誤消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM