23 / 23 / 3
Регистрация: 24.02.2010
Сообщений: 105
|
||||||
1 | ||||||
Включение/выключение try/catch по условию на этапе компиляции. Возможно ли это?28.10.2011, 10:59. Показов 4224. Ответов 17
Метки нет (Все метки)
Всем доброго дня. При доработке и тестировании довольно большого проекта на ASP.NET (C#) возник вопрос: можно ли указать директиву DEBUG, с помощью которой можно включать/отключать блоки try/catch на этапе компиляции? Т.е. если идёт процесс разработки/отладки, то временно перехват исключений отключать, для релиза же нужно, чтобы все они включены. То есть чтобы нормально мог работать вот такой код:
0
|
28.10.2011, 10:59 | |
Ответы с готовыми решениями:
17
Chart. Включение/выключение сетки, масштабирование, поворот графика. Как это сделать? Как добавить анонимный тип в объект не на этапе компиляции, а на этапе выполнения программы? Надо для routes.MapRoute Включение и выключение C++14: вычисления на этапе компиляции |
22 / 21 / 8
Регистрация: 17.02.2011
Сообщений: 384
|
||||||
28.10.2011, 11:14 | 2 | |||||
может так
0
|
23 / 23 / 3
Регистрация: 24.02.2010
Сообщений: 105
|
|
28.10.2011, 11:29 [ТС] | 3 |
Так не пойдёт, т.к. код на месте "// здесь какой-либо код, который может привести к генерации исключения" должен выполняться и при дебаге, и при релизе. Это часть основного кода.
0
|
374 / 135 / 19
Регистрация: 16.07.2010
Сообщений: 342
|
|
28.10.2011, 11:58 | 4 |
Вместо #if в данном случае нужно использовать #ifdef
0
|
23 / 23 / 3
Регистрация: 24.02.2010
Сообщений: 105
|
|
28.10.2011, 12:04 [ТС] | 5 |
#ifdef компилятор не воспринимает. Скорее всего он используется в C++, но не в C#.
0
|
374 / 135 / 19
Регистрация: 16.07.2010
Сообщений: 342
|
||||||
28.10.2011, 12:10 | 6 | |||||
Прошу прощения, перепутала. У нас это сделано так, и работает:
0
|
23 / 23 / 3
Регистрация: 24.02.2010
Сообщений: 105
|
||||||
28.10.2011, 12:43 [ТС] | 7 | |||||
Спасибо за ответ. По второму вопросу - в ASP.NET проектах нет как таковых свойств проекта, в основном всё настраивается через web.config. Во всяком случае галочки такой я нигде не нашёл... А насчёт кода у себя проверил - тоже не работает. По сути это то же самое, только более удобочитаемо (не знал, что можно использовать #if !DEBUG, поэтому делал через #else). Специально создал проект консольного приложения по виду Вашего примера - не работает. Думал, может, в ASP'е только такое. Вот код:
0
|
374 / 135 / 19
Регистрация: 16.07.2010
Сообщений: 342
|
|
28.10.2011, 12:54 | 8 |
В консольном приложении у меня эта ошибка перехватывается, если, как я писала выше, в свойствах проекта убрать define DEBUG constant или собрать в конфигурации Release. Не знаю, как это в ASP.NET.
0
|
374 / 135 / 19
Регистрация: 16.07.2010
Сообщений: 342
|
|
28.10.2011, 13:15 | 10 |
Masia_March, по-моему, это немного другое. Если это включить, то отладчик будет останавливаться вообще на всех исключениях, даже на тех, которые заключены в try-catch и успешно обрабатываются самим приложением.
0
|
23 / 23 / 3
Регистрация: 24.02.2010
Сообщений: 105
|
|
28.10.2011, 13:40 [ТС] | 11 |
Да, действительно, всё дело в свойствах проекта и #define DEBUG в начале кода не оказывает никакого влияния.
Masia_March, Мешает то, что проект в основном отлаживается на удалённом сервере, т.к. присутствуют модули на обычном asp и хранить всё это (и запускать в режиме отладки) на моём компьютере проблематично.
0
|
23 / 23 / 3
Регистрация: 24.02.2010
Сообщений: 105
|
|
31.10.2011, 13:55 [ТС] | 12 |
Прошу прощения, что апаю тему, но вопрос всё же довольно важный и актуальный. Получается нет нормального решения задачи с динамическим включением/отключением перехвата исключений в ASP.NET? Может, кто-нибудь сталкивался с такой необходимостью... Ведь не всегда получается запускать и отлаживать большие проекты на локальном компьютере, используя встроенный дебагер. А с частой выкладкой обновлений постоянные закомментирования блоков try/catch и удаление этих комментариев после обновления или исправления сильно надоедают.
0
|
23 / 23 / 3
Регистрация: 24.02.2010
Сообщений: 105
|
||||||
11.07.2012, 14:30 [ТС] | 13 | |||||
Просматривал тут свои неотвеченные вопросы и наткнулся на эту тему. Если кому интересно, то решение было найдено. Проблема решается просто:
2
|
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
|
|
11.07.2012, 15:11 | 14 |
Только e уберите оттуда, оставьте просто throw.
В противном случае у вас ко всем чертям летит снапшот стека.
0
|
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
|
|
11.07.2012, 15:18 | 15 |
kolorotur, опечатка наверное, исключение то "ex" называется
0
|
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
|
|
11.07.2012, 17:27 | 16 |
Возможно.
Тогда встает вопрос: опечатка в чем? В недостатке "x" или в лишней "e"?
0
|
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
|
|
12.07.2012, 00:42 | 17 |
kolorotur, а вы батенька гурман
0
|
23 / 23 / 3
Регистрация: 24.02.2010
Сообщений: 105
|
|
12.07.2012, 13:44 [ТС] | 18 |
Да, конечно, это была опечатка, т.к. дописывал просто в тексте. Заключается она в недостатке "x" На самом деле штука очень удобная, стал использовать практически во всех проектах. Главное перед паблишем не забывать переключить с дебага на релиз, а то совсем некрасиво получится, если вылетает исключение. Особенно в службе WCF, которая потихому закрывается в случае неперехваченного исключения
0
|
12.07.2012, 13:44 | |
12.07.2012, 13:44 | |
Помогаю со студенческими работами здесь
18
Ошибка на этапе компиляции Включение и выключение кнопки Выключение и включение устройства Включение/выключение по графику Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |