Да, как минимум. Окружить вызов getInstance() трай-кэтчем. Исключение не обязывает к завершению скрипта. Можно сделать что-то наподобии Код (PHP): try { $i = getFromCache(); } catch (Exception $e) { $i = getFromMysql(); } соответственно, бросать исключение не только при ошибке, но и при отсутствии в базе. Зафискировать ошибку при этом можно таким образом Код (PHP): try { $instance = getInstance(); } catch (Exception $e) { log($e); throw $e; } Исключение ведь не обязательно ошибка. Ввиду этого, кроме Exception, есть стандартный класс ErrorException. Алсо, catch (Exception будет ловить исключения всех классов, т.к. они все наследуют Exception.