Компромисс обработки ошибок в Java - PullRequest
3 голосов
/ 16 сентября 2011

Существует два способа обработки ошибок:

1) Использовать вложенные If и проверять ошибки

2) Используйте try / catch

Вот учебник об этом . Но здесь говорится , что попытка / отлов ухудшает производительность. Таким образом, кажется, что есть компромисс. Как решить? Что должно быть сделано?

Ответы [ 4 ]

5 голосов
/ 16 сентября 2011

Исключения ухудшают производительность , если вы их плохо используете . Не используйте их для вещей, которые обязательно появятся, и они в порядке.

По сути, вы должны использовать исключения, когда что-то неправильно - и, как правило, когда что-то не так, производительность не так уж важна. С другой стороны, если вам придется вручную проверять все ошибки, шансы на то, что пойдет не так, несколько выше, IMO ...

0 голосов
/ 16 сентября 2011

При создании / запуске приложения у вас всегда будут некоторые технические (сетевые, io, os) и функциональные ошибки (то есть программирование / пользователь).

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

Вы можете научиться этому, но просто следуйте требованиям и бросайте или глотайте; -).

0 голосов
/ 16 сентября 2011

+ 1 за ответ мистера Скита. Я хотел бы добавить, что ваш вопрос подразумевает либо / или ситуацию, но это не так.

Try / Catch - это проблема производительности, только если это ваш единственный метод обработки ошибок. Вам также нужно использовать if / else для обработки распространенных, известных случаев. Сохраните обработку исключений для исключительных случаев.

Например, вы не можете предсказать ошибки памяти, потерянные сетевые подключения или повреждение файла. В этих случаях вы будете использовать try / catch.

0 голосов
/ 16 сентября 2011

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

...