Свойство InnerException
Свойство InnerException указывает на
вложенный сбой. Его задают конструктором
new Exception("outer", inner). Текст
причины читают через InnerException.Message.
Самый глубокий элемент ищут через
GetBaseException.
Синтаксис
var inner = new Exception("inner");
var outer = new Exception("outer", inner);
Пример
Давайте вывести InnerException.Message:
using System;
class Program
{
static void Main()
{
try
{
var inner = new Exception("abcde");
throw new Exception("outer", inner);
}
catch (Exception ex)
{
Console.WriteLine(ex.InnerException.Message);
}
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте сравнить 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.InnerException.Message);
}
}
}
Результат выполнения кода:
"outer"
"12345"
Пример
Давайте проверить, что у простого сбоя InnerException равен null:
using System;
class Program
{
static void Main()
{
try
{
throw new Exception("abcde");
}
catch (Exception ex)
{
Console.WriteLine(ex.InnerException == null);
}
}
}
Результат выполнения кода:
True
Смотрите также
-
метод
GetBaseException,
который доходит до конца цепочки -
свойство
Message,
которое есть у каждого звена -
класс
Exception,
конструктор которого принимает inner -
конструкция
catch,
где читают InnerException