По умолчанию отчеты об ошибках для mysqli отключены. Единственная «ошибка», которую вы когда-либо получаете, - это предупреждение о невозможности установления соединения. Вы не можете поймать предупреждения в PHP с помощью try-catch. Однако есть очень простое решение. Включите отчет об ошибках должным образом, и вы сможете перехватывать все ошибки mysqli.
try {
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = new mysqli('localhost', $user, $password, $db);
} catch (mysqli_sql_exception $e) {
// Do something with the exception here and rethrow it.
throw $e;
}
Что касается несвязанной заметки, не похоже, что вам нужно что-то там ловить. Просто придерживайтесь стандартного способа подключения без ловли:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = new mysqli('localhost', $user, $password, $db);
$db->set_charset('utf8mb4');