Итак, у меня есть простой код:
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 с броском и бросками?
Вы можете начать с установки собственной обработки ошибок. Один, который превращает ошибки 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:
/* |-------------------------------------------------------------------------- | 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()
.
Поместите знак @ перед вызовом для подключения. Это приведет к подавлению сообщения об ошибке.