Включение/выключение try/catch по условию на этапе компиляции. Возможно ли это? - C#

Узнай цену своей работы

Формулировка задачи:

Всем доброго дня. При доработке и тестировании довольно большого проекта на ASP.NET (C#) возник вопрос: можно ли указать директиву DEBUG, с помощью которой можно включать/отключать блоки try/catch на этапе компиляции? Т.е. если идёт процесс разработки/отладки, то временно перехват исключений отключать, для релиза же нужно, чтобы все они включены. То есть чтобы нормально мог работать вот такой код:
#define DEBUG
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
 
public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
#if DEBUG
#else
        try
        {
#endif
            // здесь какой-либо код, который может привести к генерации исключения
            // и в случае отладки гораздо удобнее получить "жёлтую страницу", чтобы понять причину
            throw new Exception("Тестовая ошибка!");
#if DEBUG
#else
        }
        catch (Exception ex)
        {
            // вывод краткой информации об ошибке
            lbTest.Text = "Перехвачена ошибка! Тескт: " + ex.Message;
        };
        
#endif
    }
}
В этом тестовом примере блоки try/catch почему-то не работают в любом случае, независимо от того, определена ли директива DEBUG. И ещё вопрос: возможно ли глобальное объявление директивы (#define DEBUG) (для всего проекта), чтобы не вставлять его в каждый файл?

Решение задачи: «Включение/выключение try/catch по условию на этапе компиляции. Возможно ли это?»

textual
Листинг программы
throw e;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы