Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
942 of 1492 menu
◀ ▶

Метод GetBaseException

Метод GetBaseException обходит цепочку InnerException и возвращает последнее звено - не обёртку с текстом "outer". Если вложенности нет, вернётся тот же объект. Связано со свойством InnerException.

Синтаксис

Exception baseEx = ex.GetBaseException();

Пример

Давайте дойти до внутреннего Message:

using System; class Program { static void Main() { try { var inner = new Exception("abcde"); var outer = new Exception("outer", inner); throw outer; } catch (Exception ex) { Console.WriteLine(ex.GetBaseException().Message); } } }

Результат выполнения кода:

"abcde"

Пример

Давайте пройти цепочку из трёх уровней:

using System; class Program { static void Main() { try { var level1 = new Exception("abcde"); var level2 = new Exception("mid", level1); var level3 = new Exception("outer", level2); throw level3; } catch (Exception ex) { Console.WriteLine(ex.GetBaseException().Message); } } }

Результат выполнения кода:

"abcde"

Пример

Давайте сравнить GetBaseException с верхним Message:

using System; class Program { static void Main() { try { var inner = new Exception("12345"); throw new Exception("outer", inner); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.GetBaseException().Message); } } }

Результат выполнения кода:

"outer" "12345"

Смотрите также

  • свойство InnerException,
    которое строит цепочку
  • свойство Message,
    которое читают у базового сбоя
  • класс Exception,
    на котором вызывают GetBaseException
  • конструкция catch,
    где анализируют цепочку
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить