как мне зарегистрировать cra sh на сервере без блока try-catch? - PullRequest
0 голосов
/ 07 августа 2020

Я не понимаю, когда использовать try-catch, и что с ними не так, специально этот пункт (57 java -эффективно) мог бы кто-нибудь объяснить это

 // Horrible abuse of exceptions. Don't ever do this!
try {
   int i = 0;
   while(true)
      range[i++].climb();
} catch(ArrayIndexOutOfBoundsException e) {
}

for (Mountain m : range)
   m.climb();

"Потому что исключения предназначены для исключительных обстоятельств, у разработчиков JVM мало стимулов делать их так же быстро, как явные тесты. Размещение кода внутри блока try-catch препятствует определенным оптимизациям, которые в противном случае могли бы выполнить современные реализации JVM. Стандартная идиома для цикла по массиву не обязательно приводит к избыточным проверкам. Современные реализации JVM оптимизируют их ".

Наконец, если мы не можем использовать try-catch в каждом блоке, как я могу регистрировать сбои на сервере без блока catch

1 Ответ

0 голосов
/ 07 августа 2020

Вы можете использовать try-catch, но никогда не должны злоупотреблять этим. Избегайте разработки, управляемой исключениями .

Вы должны использовать try-catch только для перехвата исключений, которые вы не можете предсказать как разработчик, например - получение недопустимого ответа от сервера (поскольку вы не несете ответственности за бэкэнд, вы ничего не знаете о реализации сервера и его механизмах отправки ответа).

В приведенном выше примере обработка ArrayIndexOutOfBoundException бессмысленна, поскольку вы можете избежать исключения, переписывая условие while -l oop как while(i < range.size() - 1) или вообще не используя while -l oop и используя for.

...