所以我有简单的代码:
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?
答案 0 :(得分: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 ++。这是一个不一致的混乱。
答案 1 :(得分:0)
您可以使用PHP的set_error_handler()
。
答案 2 :(得分:0)
在呼叫前面加上@符号进行连接。这将抑制错误消息。