2017-01-16 3 views
1

Извините за неопределенное название.Исключение броска в методе или метод вызова

Я задаюсь вопросом, что лучше сделать в сценарии, как это:

$template = $loader->load('file'); 

if (!$template) { 
    throw new \Exception('my custom exception'); 
} 

было бы лучше, чтобы сохранить его, как это, или на самом деле выбросить исключение в методе $loader->loader()?

Я думаю, если вы действительно сталкиваетесь с исключением, которое было выбрано, как в примере, вы всегда будете щелкать по методу, в котором все равно было выбрано исключение. Таким образом, не было бы реальной причины, чтобы исключение было выше по трассе стека.

Мысли об этом? Почему вы поймаете исключение выше трассировки стека, если бы вы могли реализовать этот метод на самом деле?

+1

Это зависит от ситуации. Например, если бы это было исключение, отличное от файла, оно должно быть выбрано внутри метода загрузки. Если это касается внешнего охвата, то оно должно быть выброшено во внешний масштаб и т. Д. –

+0

@ patryk-uszynski Правда, но линия размыта. Я имею в виду, когда это будет «коррумпировать внешний охват». Потому что в обоих случаях задействован внешний масштаб. На мой взгляд, нет четкого ответа на этот вопрос. Тем не менее я опубликовал, потому что мне хотелось бы, чтобы люди думали об этом. Спасибо за прочтение! –

ответ

-1

Мое мнение - метод должен соответствовать контракту или умереть. Каждый раз, когда вы получаете объект в качестве входа, вы должны проверить, является ли он NULL или действительной ссылкой на объект. Если вы забудете проверить, NullPointerException может нарушить выполнение во время выполнения. Таким образом, ваша логика становится загрязненной несколькими проверками, а если/then/else вилки, как описано выше.

Почему нулевой плохо вы можете прочитать there

Смежные вопросы