Как вы решаете, когда бросать исключение и когда его поймать?Эффективная обработка исключений в Java
ответ
«Эффективность» не должно вызывать беспокойства.
Вы бросаете исключение, когда сталкиваетесь с ситуацией, с которой не может работать ваш код (что вы хотите, чтобы вызывающий пользователь что-то сделал).
Вы получаете исключение, если вы можете что-то сделать (и вы все равно можете повторно бросить его или другое исключение, если ваш вызывающий должен также что-то сделать с ним).
Эффективность может представлять интерес, если вы решаете, следует ли проверять условие ошибки, чтобы избежать последующего исключения или просто вызвать некоторый код и обработать исключение впоследствии. Здесь эмпирическое правило заключается в том, что исключения должны возникать только в исключительных случаях, потому что они несут на себе слишком много служебных затрат времени выполнения (когда они фактически выбрасываются, чистое присутствие блоков catch не требует затрат).
Ну, это одна из дискуссионных тем, в которых много людей имеют сильные мнения. Несколько полезных ссылок
http://www.ibm.com/developerworks/java/library/j-jtp05254.html
http://onjava.com/pub/a/onjava/2003/11/19/exceptions.html
Большинство популярных рамок как Spring верят в философии только обработка исключений, если вы можете сделать что-то о них, и поэтому они бросают более прогонов исключения времени. Это имеет смысл, поскольку бросать и ловить проверенные исключения - это добавление ненужного кода.
Еще есть улов. В какой-то момент вашего приложения, особенно ближе к интерфейсу интерфейса UI (например, сервлеты для вашего веб-приложения), вы хотите убедиться, что вы правильно обрабатываете все виды исключений и ловите их. В противном случае пользователь увидит ошибку 500, которая определенно не идеальна. В какой-то момент вы хотите дать пользователю представление о том, что пошло не так. если это исключение во время выполнения, может быть лучше сказать, неподтвержденная ошибка, зарегистрировать ее и отправить почту системному администратору со следом.
Итак, да, обрабатывайте только исключения, которые вы ожидаете и можете обрабатывать конструктивно во всем приложении. Но сделайте исключение из этого правила, когда вы приближаетесь к уровню пользовательского интерфейса вашего приложения.
- 1. Эффективная обработка исключений для потоков в java
- 2. Эффективная обработка текста Java
- 3. Обработка исключений в Java
- 4. Обработка исключений в JAVA
- 5. Обработка исключений Java
- 6. Обработка исключений java
- 7. Обработка исключений Java
- 8. Java Обработка исключений - Стиль
- 9. Обработка исключений Java SpringBoot
- 10. java - обработка исключений
- 11. Обработка вложенных исключений Java
- 12. Java обработка исключений запрос
- 13. Java - Обработка исключений - throws
- 14. Обработка исключений Java:/zeo
- 15. Обработка фатальных исключений в Java
- 16. Обработка исключений IO в Java
- 17. Обработка исключений выполнения в Java
- 18. Простая обработка исключений в Java
- 19. Обработка исключений в Java-приложении
- 20. Обработка исключений в Java (GWT)
- 21. OverLimit Обработка исключений в java
- 22. незарегистрированная обработка исключений в java
- 23. Обработка исключений в Java - окончательный
- 24. Java обработка исключений в наследство
- 25. обработка исключений Java в анализаторами
- 26. Пользовательские Обработка исключений в Java
- 27. Обработка исключений Java в «событиях»
- 28. Java Как программировать: Обработка исключений
- 29. java обработка исключений вложенных методов
- 30. Java на заказ Обработка исключений
Действительно ли это правда, что нет необходимости иметь блок catch? Я бы подумал, что накладные расходы (хотя и, вероятно, небольшие по сравнению с вашим реальным кодом) в настройке и разрывании дополнительных кадров, ориентированных на исключение, даже если исключения не выбрасываются. – 2010-12-16 04:50:14