Сначала вы описываете свои ожидания, а затем спрашиваете, что общего.Я бы сказал, что обычно случается так, что если слой базы данных не может соединиться с базой данных, генерировать исключение базы данных.Таким образом, ясно, что на некотором системном уровне что-то не удалось.
Приложение, которое было написано для взаимодействия с базой данных, должно затем самостоятельно решить, как обращаться с этими исключениями базы данных.Обычно код, который ожидает, что база данных будет работать, не будет работать, если ее нет.
Теперь к случаям, которые вы называете логической ошибкой.Это зависит от многих.Я не буду концентрироваться на конкретном коде ошибки базы данных (который даже может со временем меняться, новые добавляются с новыми версиями, старые могут больше не использоваться).Вместо этого сконцентрируйтесь на том, соответствуют ли возвращаемые данные какой-либо операции вашим ожиданиям, и укажите такие значения на случай, если вы не сделаете этого до сих пор.
Например: если обновление имеет решающее значение, и вам необходимо убедиться, чтообновление прошло успешно, проверьте это.Но это не часть уровня базы данных, чтобы решить, было ли это важно или нет.Это часть кода вашего приложения, например, модель домена или сценарий транзакции .
. Сам Mysqli уже может выдавать некоторые исключения при определенных обстоятельствах, есть одно исключение срасширение:
class mysqli_sql_exception extends RuntimeException
Для ошибок подключения вам нужно будет выбросить свои собственные исключения.Поэтому проверяем возвращаемые значения и затем генерируем исключение из вашей базы данных.