Извините за смутное название.
Мне интересно, что лучше всего делать в таком сценарии:
$template = $loader->load('file');
if (!$template) {
throw new \Exception('my custom exception');
}
Было бы лучше оставить это так, или на самом деле бросить исключение в $loader->loader()
метод?
Я предполагаю, что если вы действительно встретите исключение, которое было сгенерировано, как в примере, вы всегда будете щелкать по методу, в котором исключение было выброшено в любом случае. Таким образом, не было бы реальной причины для исключения, чтобы быть выше в трассировке стека.
Мысли об этом? Зачем вам ловить исключение выше в трассировке стека, если бы вы могли сделать так, чтобы метод фактически реализовал исключение?
Мое мнение, метод должен соответствовать договору или умереть.
Каждый раз, когда вы получаете объект в качестве входных данных, вы должны проверить, является ли он NULL или действительной ссылкой на объект. Если вы забыли проверить, NullPointerException
может прервать выполнение во время выполнения. Таким образом, ваша логика загрязняется несколькими проверками, и если / then / else разветвляется, как вы описали выше.
Почему ноль плохо, вы можете прочитать там
Других решений пока нет …