Экспорт (0) Печать
Развернуть все
Данная статья переведена автоматически. Наведите указатель мыши на предложения статьи, чтобы просмотреть исходный текст. Дополнительные сведения.
Перевод
Текст оригинала

Exception.InnerException - свойство

Возвращает экземпляр объекта Exception, который вызвал текущее исключение.

Пространство имен:  System
Сборка:  mscorlib (в mscorlib.dll)

public Exception InnerException { get; }

Значение свойства

Тип: System.Exception
Экземпляр Exception, описывающий ошибку, вызывающую текущее исключение. Свойство InnerException возвращает то же значение, что было передано в конструктор, или указатель NULL (Nothing в Visual Basic), если конструктору не было передано значение внутреннего исключения. Это свойство доступно только для чтения.

Реализации

_Exception.InnerException

При создании исключения X, являющегося непосредственным результатом предыдущего исключения Y, свойство InnerException параметра X должно содержать ссылку на параметр Y.

Свойство InnerException используется, чтобы получить набор исключений, ставших причиной текущего исключения.

Можно создать новое исключение, которое перехватывает более раннее исключение. Код, обрабатывающий второе исключение, для более адекватной обработки ошибки может использовать дополнительные сведения из более раннего исключения.

Допустим, что существует функция, которая считывает файл и форматирует данные этого файла. В этом примере при считывании файла кодом возникает исключение IOException. Функция перехватывает исключение IOException и выбрасывает исключение FileNotFoundException. Исключение IOException можно сохранить в свойстве InnerException исключения FileNotFoundException, разрешив выполнение кода, перехватывающего исключение FileNotFoundException, для выяснения причины начальной ошибки.

Свойство InnerException, содержащее ссылку на внутреннее исключение, устанавливается при инициализации объекта исключения.

В следующем примере демонстрируется создание и перехват исключения, ссылающегося на внутреннее исключение.


using System;
public class MyAppException:ApplicationException 
{
   public MyAppException (String message) : base (message) 
   {}
   public MyAppException (String message, Exception inner) : base(message,inner) {}	
   }
public class ExceptExample 
{
   public void ThrowInner () 
   {
   throw new MyAppException("ExceptExample inner exception");
   }
   public void CatchInner() 
   {
      try 
      {
      this.ThrowInner();
      }
         catch (Exception e) 
         {
         throw new MyAppException("Error caused by trying ThrowInner.",e);
         }
      }
   }
public class Test 
{
   public static void Main() 
   {
   ExceptExample testInstance = new ExceptExample();
      try 
      {
      testInstance.CatchInner();
      }
         catch(Exception e) 
         {
         Console.WriteLine ("In Main catch block. Caught: {0}", e.Message);
         Console.WriteLine ("Inner Exception is {0}",e.InnerException);
         }
      }
}


Результаты этого кода выглядят следующим образом:

In Main
  catch block. Caught: Error caused by trying ThrowInner. Inner Exception is
  MyAppException: ExceptExample inner exception at ExceptExample.ThrowInner() at
  ExceptExample.CatchInner()

.NET Framework

Поддерживается в версиях: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework (клиентский профиль)

Поддерживается в версиях: 4, 3.5 с пакетом обновления 1 (SP1)

Переносимая библиотека классов

Поддерживается в версии: Переносимая библиотека классов

Приложения .NET для Магазина Windows

Поддерживается в версии: Windows 8

Приложения .NET для Windows Phone

Поддерживается в версиях: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista с пакетом обновления 2 (SP2), Windows Server 2008 (роль основных серверных компонентов не поддерживается), Windows Server 2008 R2 (роль основных серверных компонентов поддерживается в пакете обновления 1 (SP1) или выше; системы на базе Itanium не поддерживаются)

.NET Framework поддерживает не все версии каждой платформы. Поддерживаемые версии перечислены в разделе Требования к системе для .NET Framework.

Добавления сообщества

ДОБАВИТЬ
Показ:
© 2014 Microsoft