追赶MySQL连接错误(Catching mysql connection error)

2019-07-30 19:07发布

所以,我有简单的代码:

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投和罚球?

Answer 1:

你可以安装自己的错误处理开始。 一个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 ++。 这是一个矛盾的混乱。



Answer 2:

您可以使用PHP的set_error_handler()



Answer 3:

把一个@符号在通话前进行连接。 这将取消错误信息。



文章来源: Catching mysql connection error