Веские причины избегать использования операторов try-catch

Пример №1:

try { fileChooser.setSelectedFile(new File(filename)); }
catch (NullPointerException e) { /* do nothing */ }

Пример №2:

if (filename != null)
    fileChooser.setSelectedFile(new File(filename));

Является ли №1 плохим по своей сути с точки зрения производительности или стабильности (или по любым другим причинам), или он просто немного отличается? Это не очень хороший пример, потому что у №1 нет преимуществ перед №2, но они могут быть при других обстоятельствах (например, улучшенная читаемость, меньше строк кода и т. Д.).


Изменить: консенсус в том, что №1 - нет. Самая популярная причина: Накладные расходы

Кроме того, @Raph Levien сделал хорошее понимание:

Одна из причин, по которой следует избегать №1, заключается в том, что это отравляет вашу способность использовать точки останова по исключениям. Нормально функционирующий код никогда не вызовет целенаправленно исключение нулевого указателя. Таким образом, имеет смысл настроить отладчик так, чтобы он останавливался каждый раз, когда это происходит. В случае №1 вы, вероятно, будете регулярно получать такие исключения. Среди других веских причин также существует потенциальное влияние на производительность.

Кроме того, См. Ссылку для более подробной информации.

6
задан Community 23 May 2017 в 11:54
поделиться