Например, у меня есть dll (Helper.dll
), который содержит некоторые методы работы с внешней системой через библиотеку провайдера (Provider.dll
). Provider.dll
определяет SystemIsDownException
, и я повторно бросаю его в Helper.dll
. Кроме того, у меня есть еще одна dll (Service.dll
), которая использует Helper.dll
и тонны других, она должна поймать различные типы исключений и как-то обработать их. Мой вопрос: действительно ли это влияет на производительность, если я поймаю SystemIsDownException
(от Provider.dll
) в Service.dll
? Или я должен определить свои собственные типы исключений для каждого исключения из Provider.dll
в Helper.dll
? Извините за длинный вопрос.Производительность. Полезно ли определять собственные типы исключений?
ответ
Выполняйте то, что вы должны делать в логических терминах, и не заботитесь о производительности.
Не создавайте типы исключений, основанные на соображениях производительности. Создайте их, если вы найдете их значимыми и полезными для удобства и ясности вашей библиотеки.
Ответьте на короткий вопрос: не перехватывайте и не перебрасывайте исключения, если вы не обрабатываете исключения и не добавляете полезную информацию. Просто перехватывая исключения, а затем перестраивая их, беспорядочно стекает стек (например, когда исходное исключение теряется), и, конечно же, это влияет на производительность (так как время выполнения должно готовить тупость tttrace). Если вам нужно скрыть исключения от provider.dll
, если service.dll
не может ссылаться на него, вам нужно их восстановить в helper.dll
(если вы хотите поймать конкретное исключение из provider.dll
в service.dll
).
Некоторые идеи:
- Чем меньше оберточной код вы пишете, тем легче будет поддерживать ваш код
- Не используйте исключения для логического управления
- Исключения имеют очень мало общего с эффективностью, если вы зададите этот вопрос, вы, вероятно, используете его для управления логикой
Таким образом, ответ будет: определять полезные и значимые исключения, которые вам необходимы (отчетливо). Отсутствует производительность, если вы не используете исключения для прямого логического потока, и в этом случае вы должны остановить и реорганизовать свое приложение.
Согласовано. НЕ используйте для логического управления. Upvote. Это также указано здесь: http://blogs.msdn.com/b/kcwalina/archive/2005/03/16/396787.aspx – granadaCoder
- 1. Java: полезно ли определять компоненты в XML?
- 2. Haskell: могут ли типы типов определять типы (свойства типа ala)
- 3. Полезно ли определять имена переменных с помощью символов utf-8?
- 4. Symfony2 - Какой смысл определять собственные названия маршрутов?
- 5. определять собственные переменные-члены в одной строке
- 6. Hadoop собственные типы данных
- 7. Подкласс Собственные типы
- 8. Могу ли я определить свои собственные типы исключений в C# .net? если да, то как ..?
- 9. Повышает ли производительность конкретную обработку исключений?
- 10. Должен ли я бросать разные типы исключений?
- 11. Типы исключений в Java
- 12. Что такое хороший подход, позволяющий пользователям определять свои собственные пользовательские типы?
- 13. J2ME Типы исключений
- 14. прохождения/вернуть наши собственные типы
- 15. Собственные типы typedef с C4430
- 16. Необработанные типы и производительность
- 17. Когда полезно определять своих собственных делегатов вместо использования дженериков?
- 18. Типы и производительность индексирования ElasticSearch
- 19. Сделать mysql_fetch_assoc автоматически определять типы возвращаемых данных?
- 20. Типы дискриминаторов JPA Производительность
- 21. Могу ли я создать свои собственные типы ввода html5?
- 22. Могу ли я добавлять собственные типы метаданных в виды бритвы?
- 23. различные типы исключений в .net
- 24. Полезно ли использовать boost :: any?
- 25. Собственные типы, основанные на стандартных типах
- 26. Фиксированные размеры Собственные типы как параметры
- 27. Python Numpy Типы данных Производительность
- 28. Полезно ли использовать счетчики?
- 29. Полезно ли сжать localStorage?
- 30. Полезно ли использовать формообразователь?
Почему, по вашему мнению, * тип * исключенного исключения повлияет на производительность? – jalf
Какую работу вы беспокоитесь? Погрузка производительности сборки или фактическое бросание/обработка исключений? –
Это просто не имеет значения, где определено исключение. Как только инфраструктура .net привязана к dll, которая содержит определение, тип исключения, где dll определяется в, не имеет значения. – Alpay