Есть ли в Java накладные расходы на использование блока try / catch , в отличие от блока if (при условии, что вложенный код в противном случае не запрашивает этого)?
Например, возьмите следующие две простые реализации метода «безопасной обрезки» для строк:
public String tryTrim(String raw) {
try {
return raw.trim();
} catch (Exception e) {
}
return null;
}
public String ifTrim(String raw) {
if (raw == null) {
return null;
}
return raw.trim();
}
Если необработанный
ввод редко null
, есть ли разница в производительности между двумя методами?
Кроме того, это хороший шаблон программирования для использования tryTrim ()
подход для упрощения макета кода, особенно когда можно избежать многих блоков if , проверяющих редкие условия ошибки, заключив код в один блок try / catch?
Например, это общий случай, когда метод с N параметров
, который использует M <= N
из них около своего начала, быстро и детерминированно терпит неудачу, если какой-либо такой параметр i s "недопустимый" (например, пустая или пустая строка), не влияя на остальную часть кода.
В таких случаях вместо записи k * M
if блоков (где k
- среднее количество проверок на параметр, например k = 2
для нулевых или пустых строк), блок try / catch значительно сократит код, и можно использовать комментарий 1-2 строки, чтобы явно отметить «нетрадиционную» логику .
Такой шаблон также ускорит метод, особенно если условия ошибки возникают редко, и это будет сделано без ущерба для безопасности программы (при условии, что условия ошибки являются «нормальными», например, как в методе обработки строк, где null или пустые значения допустимы, хотя и редко).