Прочитать на английском

Поделиться через


ArgumentOutOfRangeException Класс

Определение

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

C#
public class ArgumentOutOfRangeException : ArgumentException
C#
[System.Serializable]
public class ArgumentOutOfRangeException : ArgumentException
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class ArgumentOutOfRangeException : ArgumentException
Наследование
ArgumentOutOfRangeException
Наследование
ArgumentOutOfRangeException
Атрибуты
Реализации

Примеры

В следующем примере определяется класс, содержащий сведения о приглашенном госте. Если гость моложе 21 года, ArgumentOutOfRangeException возникает исключение.

C#
using System;
using static System.Console;

public class Program
{
    public static void Main(string[] args)
    {
        try
        {
            var guest1 = new Guest("Ben", "Miller", 17);
            WriteLine(guest1.GuestInfo);
        }
        catch (ArgumentOutOfRangeException argumentOutOfRangeException)
        {
            WriteLine($"Error: {argumentOutOfRangeException.Message}");
        }
    }
}

class Guest
{
    private const int minimumRequiredAge = 21;

    private string firstName;
    private string lastName;
    private int age;

    public Guest(string firstName, string lastName, int age)
    {
        if (age < minimumRequiredAge)
            throw new ArgumentOutOfRangeException(nameof(age), $"All guests must be {minimumRequiredAge}-years-old or older.");

        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }

    public string GuestInfo => $"{firstName} {lastName}, {age}";
}

Комментарии

Исключение ArgumentOutOfRangeException возникает при вызове метода и по крайней мере один из аргументов, переданных методу, не null является и содержит недопустимое значение, не являющееся членом набора значений, ожидаемых для аргумента. Свойство ParamName определяет недопустимый аргумент, а ActualValue свойство, если имеется значение, определяет недопустимое значение.

Как правило, возникает ArgumentOutOfRangeException ошибка разработчика. Вместо обработки исключения в try/catch блоке следует устранить причину исключения или, если аргумент возвращается вызовом метода или вводом пользователем перед передачей в метод, вызывающий исключение, следует проверить аргументы перед их передачей в метод.

ArgumentOutOfRangeException широко используется следующими средствами:

Ниже перечислены условия, в которых ArgumentOutOfRangeException возникает исключение.

  • Извлекается элемент коллекции по номеру индекса, и номер индекса недопустим.

    Это наиболее распространенная причина ArgumentOutOfRangeException исключения. Как правило, номер индекса недопустим по одной из четырех причин:

    1. Коллекция не содержит элементов, и ваш код предполагает, что это так. В следующем примере предпринимается попытка получить первый элемент коллекции, которая не содержит элементов:

      C#
      using System;
      using System.Collections.Generic;
      
      public class Example4
      {
         public static void Main()
         {
            var list = new List<string>();
            Console.WriteLine("Number of items: {0}", list.Count);
            try {
               Console.WriteLine("The first item: '{0}'", list[0]);
            }
            catch (ArgumentOutOfRangeException e) {
               Console.WriteLine(e.Message);
            }
         }
      }
      // The example displays the following output:
      //   Number of items: 0
      //   Index was out of range. Must be non-negative and less than the size of the collection.
      //   Parameter name: index
      

      Чтобы избежать исключения, проверка, больше ли свойство коллекцииCount, прежде чем пытаться получить какие-либо члены, как это делает следующий фрагмент кода.

      C#
      if (list.Count > 0)
         Console.WriteLine("The first item: '{0}'", list[0]);
      
    2. В некоторых случаях исключение может возникать из-за того, что вы пытаетесь добавить член в коллекцию с помощью несуществующего индекса, а не путем вызова метода, например Add, который существует для этой цели. В следующем примере предпринимается попытка добавить элемент в коллекцию с помощью несуществующего индекса вместо вызова List<T>.Add метода .

      C#
      using System;
      using System.Collections.Generic;
      
      public class Example13
      {
         public static void Main()
         {
            var numbers = new List<int>();
            numbers.AddRange( new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 20 } );
      
            var squares = new List<int>();
            for (int ctr = 0; ctr < numbers.Count; ctr++)
               squares[ctr] = (int) Math.Pow(numbers[ctr], 2);
         }
      }
      // The example displays the following output:
      //    Unhandled Exception: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
      //    Parameter name: index
      //       at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
      //       at Example.Main()
      

      Следующий фрагмент кода исправляет эту ошибку:

      C#
      var squares = new List<int>();
      for (int ctr = 0; ctr < numbers.Count; ctr++)
         squares.Add((int) Math.Pow(numbers[ctr], 2));
      
    3. Вы пытаетесь получить элемент, индекс которого является отрицательным. Обычно это происходит из-за того, что вы выполнили поиск индекса определенного элемента в коллекции и ошибочно предположили, что поиск выполнен успешно. В следующем примере вызову List<T>.FindIndex(Predicate<T>) метода не удается найти строку, равную "Z", поэтому возвращается значение -1. Однако это недопустимое значение индекса.

      C#
      using System;
      using System.Collections.Generic;
      
      public class Example
      {
         public static void Main()
         {
            var list = new List<string>();
            list.AddRange( new String[] { "A", "B", "C" } );
            // Get the index of the element whose value is "Z".
            int index = list.FindIndex((new StringSearcher("Z")).FindEquals);
            try {
               Console.WriteLine("Index {0} contains '{1}'", index, list[index]);
            }
            catch (ArgumentOutOfRangeException e) {
               Console.WriteLine(e.Message);
            }
         }
      }
      
      internal class StringSearcher
      {
         string value;
      
         public StringSearcher(string value)
         {
            this.value = value;
         }
      
         public bool FindEquals(string s)
         {
            return s.Equals(value, StringComparison.InvariantCulture);
         }
      }
      // The example displays the following output:
      //   Index was out of range. Must be non-negative and less than the size of the collection.
      //   Parameter name: index
      

      Чтобы предотвратить исключение, проверка, что поиск выполнен успешно, убедившись, что возвращаемый индекс больше или равен нулю, прежде чем пытаться извлечь элемент из коллекции, как показано в следующем фрагменте кода.

      C#
      // Get the index of the element whose value is "Z".
      int index = list.FindIndex((new StringSearcher("Z")).FindEquals);
      if (index >= 0)
         Console.WriteLine("'Z' is found at index {0}", list[index]);
      
    4. Вы пытаетесь получить элемент, индекс которого равен значению свойства коллекции Count , как показано в следующем примере.

      C#
      using System;
      using System.Collections.Generic;
      
      public class Example8
      {
         public static void Main()
         {
            var list = new List<string>();
            list.AddRange( new String[] { "A", "B", "C" } );
            try {
               // Display the elements in the list by index.
               for (int ctr = 0; ctr <= list.Count; ctr++)
                  Console.WriteLine("Index {0}: {1}", ctr, list[ctr]);
            }
            catch (ArgumentOutOfRangeException e) {
               Console.WriteLine(e.Message);
            }
         }
      }
      // The example displays the following output:
      //   Index 0: A
      //   Index 1: B
      //   Index 2: C
      //   Index was out of range. Must be non-negative and less than the size of the collection.
      //   Parameter name: index
      

      Так как в коллекциях в .NET используется индексирование с нуля, первый элемент коллекции находится по индексу 0, а последний элемент — по индексу Count — 1. Эту ошибку можно устранить, обеспечив доступ к последнему элементу по индексу Count 1, как показано в следующем коде.

      C#
      // Display the elements in the list by index.
      for (int ctr = 0; ctr < list.Count; ctr++)
         Console.WriteLine("Index {0}: {1}", ctr, list[ctr]);
      
  • Вы пытаетесь выполнить строковую операцию путем вызова метода обработки строк, и начальный индекс в строке не существует.

    Перегрузки таких методов, как String.Compare, String.CompareOrdinal, String.IndexOf, String.LastIndexOfString.InsertString.LastIndexOfAnyIndexOfAnyRemoveили String.Substring , которые позволяют указать начальный индекс операции, требуют, чтобы индекс был допустимой позицией в строке. Допустимые индексы варьируются от 0 до String.Length –1.

    Существует четыре распространенные причины этого ArgumentOutOfRangeException исключения:

    1. Вы работаете с пустой строкой или String.Empty. Так как его String.Length свойство возвращает значение 0, любая попытка управлять им с помощью индекса вызывает ArgumentOutOfRangeException исключение. В следующем примере определяется GetFirstCharacter метод, возвращающий первый символ строки. Если строка пуста, как и последняя строка, переданная методу , вызывает ArgumentOutOfRangeException исключение.

      C#
      using System;
      
      public class Example1
      {
          public static void Main()
          {
              String[] words = { "the", "today", "tomorrow", " ", "" };
              foreach (var word in words)
                  Console.WriteLine("First character of '{0}': '{1}'",
                                    word, GetFirstCharacter(word));
          }
      
          private static char GetFirstCharacter(string s)
          {
              return s[0];
          }
      }
      // The example displays the following output:
      //    First character of //the//: //t//
      //    First character of //today//: //t//
      //    First character of //tomorrow//: //t//
      //    First character of // //: // //
      //
      //    Unhandled Exception: System.IndexOutOfRangeException: Index was outside the bounds of the array.
      //       at Example.Main()
      

      Исключение можно устранить, проверив, больше ли значение строки String.Length , или вызвав IsNullOrEmpty метод , чтобы убедиться, что строка не null является или пуста. В следующем фрагменте кода выполняется последнее. В этом случае, если строка имеет значение null или пуста, GetFirstCharacter метод возвращает U+0000.

      C#
      static char GetFirstCharacter(string s)
      {
          if (string.IsNullOrEmpty(s))
              return '\u0000';
          else
              return s[0];
      }
      
    2. Вы управляете строкой на основе положения подстроки в этой строке, и вам не удалось определить, была ли подстрока действительно найдена.

      В следующем примере извлекается второе слово из двухсловной фразы. Он создает исключение, ArgumentOutOfRangeException если фраза состоит только из одного слова и, следовательно, не содержит внедренного символа пробела. Это происходит потому, что вызов String.IndexOf(String) метода возвращает -1, чтобы указать, что поиск завершился сбоем, и это недопустимое значение затем передается методу String.Substring(Int32) .

      C#
      using System;
      
      public class Example17
      {
         public static void Main()
         {
            String[] phrases = { "ocean blue", "concerned citizen",
                                 "runOnPhrase" };
            foreach (var phrase in phrases)
               Console.WriteLine("Second word is {0}", GetSecondWord(phrase));
         }
      
         static string GetSecondWord(string s)
         {
            int pos = s.IndexOf(" ");
            return s.Substring(pos).Trim();
         }
      }
      // The example displays the following output:
      //    Second word is blue
      //    Second word is citizen
      //
      //    Unhandled Exception: System.ArgumentOutOfRangeException: StartIndex cannot be less than zero.
      //    Parameter name: startIndex
      //       at System.String.Substring(Int32 startIndex, Int32 length)
      //       at Example17.GetSecondWord(String s)
      //       at Example17.Main()
      

      Чтобы исключить исключение, проверьте значение, возвращаемое методом поиска строк, перед вызовом метода обработки строк.

      C#
      using System;
      
      public class Example18
      {
         public static void Main()
         {
            String[] phrases = { "ocean blue", "concerned citizen",
                                 "runOnPhrase" };
            foreach (var phrase in phrases) {
               string word = GetSecondWord(phrase);
               if (! string.IsNullOrEmpty(word))
                  Console.WriteLine("Second word is {0}", word);
            }
         }
      
         static string GetSecondWord(string s)
         {
            int pos = s.IndexOf(" ");
            if (pos >= 0)
               return s.Substring(pos).Trim();
            else
               return string.Empty;
         }
      }
      // The example displays the following output:
      //       Second word is blue
      //       Second word is citizen
      
    3. Вы попытались извлечь подстроку, которая находится за пределами диапазона текущей строки.

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

      В ArgumentOutOfRangeException этом случае обычно возникает исключение, так как вы неправильно вычислили количество символов в подстроке. Если вы используете метод поиска, например String.IndexOf , для определения начальной и конечной позиций подстроки:

      • Если символ в конечной позиции, возвращаемой параметром String.IndexOf , должен быть включен в подстроку, конечная позиция подстроки задается формулой.

        endIndex - startIndex + 1
        
      • Если символ в конечной позиции, возвращаемой параметром String.IndexOf , должен быть исключен из подстроки, то конечная позиция подстроки задается формулой

        endIndex - startIndex
        

        В следующем примере определяется FindWords метод , который использует String.IndexOfAny(Char[], Int32) метод для идентификации пробелов и знаков препинания в строке и возвращает массив, содержащий слова, найденные в строке.

        C#
        using System;
        using System.Collections.Generic;
        
        public class Example19
        {
           public static void Main()
           {
              string sentence = "This is a simple, short sentence.";
              Console.WriteLine("Words in '{0}':", sentence);
              foreach (var word in FindWords(sentence))
                 Console.WriteLine("   '{0}'", word);
           }
        
           static String[] FindWords(string s)
           {
              int start = 0, end = 0;
              Char[] delimiters = { ' ', '.', ',', ';', ':', '(', ')' };
              var words = new List<string>();
        
              while (end >= 0) {
                 end = s.IndexOfAny(delimiters, start);
                 if (end >= 0) {
                    if (end - start > 0)
                       words.Add(s.Substring(start, end - start));
        
                    start = end + 1;
                 }
                 else {
                    if (start < s.Length - 1)
                       words.Add(s.Substring(start));
                 }
              }
              return words.ToArray();
           }
        }
        // The example displays the following output:
        //       Words in 'This is a simple, short sentence.':
        //          'This'
        //          'is'
        //          'a'
        //          'simple'
        //          'short'
        //          'sentence'
        
  • Вы передали отрицательное число методу с аргументом, требующим только положительных чисел и ноль, или передали отрицательное число или ноль методу с аргументом, требующим только положительных чисел.

    Например, Array.CreateInstance(Type, Int32, Int32, Int32) метод требует указать количество элементов в каждом измерении двумерного массива; допустимые значения для каждого измерения могут быть в диапазоне от 0 до Int32.MaxValue. Но поскольку аргумент измерения в следующем примере имеет отрицательное значение, метод создает ArgumentOutOfRangeException исключение.

    C#
    using System;
    
    public class Example01
    {
        public static void Main()
        {
            int dimension1 = 10;
            int dimension2 = -1;
            try
            {
                Array arr = Array.CreateInstance(typeof(string),
                                                 dimension1, dimension2);
            }
            catch (ArgumentOutOfRangeException e)
            {
                if (e.ActualValue != null)
                    Console.WriteLine("{0} is an invalid value for {1}: ", e.ActualValue, e.ParamName);
                Console.WriteLine(e.Message);
            }
        }
    }
    // The example displays the following output:
    //     Non-negative number required.
    //     Parameter name: length2
    

    Чтобы исправить ошибку, убедитесь, что значение недопустимого аргумента не является отрицательным. Это можно сделать, указав допустимое значение, как показано в следующем фрагменте кода.

    C#
    int dimension1 = 10;
    int dimension2 = 10;
    Array arr = Array.CreateInstance(typeof(string),
                                     dimension1, dimension2);
    

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

    C#
    if (dimension1 < 0 || dimension2 < 0)
    {
        Console.WriteLine("Unable to create the array.");
        Console.WriteLine("Specify non-negative values for the two dimensions.");
    }
    else
    {
        arr = Array.CreateInstance(typeof(string),
                                   dimension1, dimension2);
    }
    
  • Состояние гонки существует в многопотоковом приложении или имеет задачи, которые выполняются асинхронно и обновляют массив или коллекцию.

    В следующем примере объект используется List<T> для заполнения коллекции Continent объектов . Он создает исключение , ArgumentOutOfRangeException если пример пытается отобразить семь элементов в коллекции до полного заполнения коллекции.

    C#
    using System;
    using System.Collections.Generic;
    using System.Threading;
    
    public class Continent
    {
       public string? Name { get; set; }
       public int Population { get; set; }
       public Decimal Area { get; set; }
    }
    
    public class Example11
    {
       static List<Continent> continents = new List<Continent>();
       static string? s_msg;
    
       public static void Main()
       {
          String[] names = { "Africa", "Antarctica", "Asia",
                             "Australia", "Europe", "North America",
                             "South America" };
          // Populate the list.
          foreach (var name in names) {
             var th = new Thread(PopulateContinents);
             th.Start(name);
          }
          Console.WriteLine(s_msg);
          Console.WriteLine();
    
          // Display the list.
          for (int ctr = 0; ctr < names.Length; ctr++) {
             var continent = continents[ctr];
             Console.WriteLine("{0}: Area: {1}, Population {2}",
                               continent.Name, continent.Population,
                               continent.Area);
          }
       }
    
       private static void PopulateContinents(Object? obj)
       {
          string? name = obj?.ToString();
          s_msg += string.Format("Adding '{0}' to the list.\n", name);
          var continent = new Continent();
          continent.Name = name;
          // Sleep to simulate retrieving remaining data.
          Thread.Sleep(50);
          continents.Add(continent);
       }
    }
    // The example displays output like the following:
    //    Adding //Africa// to the list.
    //    Adding //Antarctica// to the list.
    //    Adding //Asia// to the list.
    //    Adding //Australia// to the list.
    //    Adding //Europe// to the list.
    //    Adding //North America// to the list.
    //    Adding //South America// to the list.
    //
    //
    //
    //    Unhandled Exception: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
    //    Parameter name: index
    //       at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
    //       at Example.Main()
    

    В этом случае доступ к двум ресурсам происходит из нескольких потоков:

    • Коллекция continents. Его List<T>.Add метод вызывается из нескольких потоков. Кроме того, main или основной поток предполагает, что коллекция полностью заполнена семью элементами при итерации своих членов.

    • Строка msg , которая объединяется из нескольких потоков.

    Чтобы исправить ошибку, убедитесь, что доступ к общему состоянию осуществляется потокобезопасно, как показано ниже.

    • Если приложение использует массив или объект коллекции, рекомендуется использовать потокобезопасный класс коллекции, например типы в System.Collections.Concurrent пространстве имен или внеполосный System.Collections.Immutable выпуск.

    • Убедитесь, что доступ к общему состоянию (то есть к ресурсам, к которым могут обращаться несколько потоков) потокобезопасно, чтобы только один поток за раз получил монопольный доступ к ресурсам. Для синхронизации доступа к ресурсам доступно большое количество классов, таких как CountdownEvent, InterlockedMonitor, и Mutex. Дополнительные сведения см. в разделе Потоки. Кроме того, поддержка языка доступна через оператор lock в C# и конструкцию SyncLock в Visual Basic.

    В следующем примере рассматриваются ArgumentOutOfRangeException и другие проблемы из предыдущего примера. Он заменяет List<T> объект объектом , ConcurrentBag<T> чтобы обеспечить потокобезопасный доступ к коллекции, использует CountdownEvent объект , чтобы поток приложения продолжался только после выполнения других потоков, и использует блокировку, чтобы гарантировать, что только один поток может получить доступ к msg переменной одновременно.

    C#
    using System;
    using System.Collections.Concurrent;
    using System.Threading;
    
    public class ContinentD
    {
       public string? Name { get; set; }
       public int Population { get; set; }
       public Decimal Area { get; set; }
    }
    
    public class Example12
    {
       static ConcurrentBag<ContinentD> ContinentDs = new ConcurrentBag<ContinentD>();
       static CountdownEvent? gate;
       static string msg = string.Empty;
    
       public static void Main()
       {
          String[] names = { "Africa", "Antarctica", "Asia",
                             "Australia", "Europe", "North America",
                             "South America" };
          gate = new CountdownEvent(names.Length);
    
          // Populate the list.
          foreach (var name in names) {
             var th = new Thread(PopulateContinentDs);
             th.Start(name);
          }
    
          // Display the list.
          gate.Wait();
          Console.WriteLine(msg);
          Console.WriteLine();
    
          var arr = ContinentDs.ToArray();
          for (int ctr = 0; ctr < names.Length; ctr++) {
             var ContinentD = arr[ctr];
             Console.WriteLine("{0}: Area: {1}, Population {2}",
                               ContinentD.Name, ContinentD.Population,
                               ContinentD.Area);
          }
       }
    
       private static void PopulateContinentDs(Object? obj)
       {
          string? name = obj?.ToString();
          lock(msg) {
             msg += string.Format("Adding '{0}' to the list.\n", name);
          }
          var ContinentD = new ContinentD();
          ContinentD.Name = name;
          // Sleep to simulate retrieving remaining data.
          Thread.Sleep(25);
          ContinentDs.Add(ContinentD);
          gate?.Signal();
       }
    }
    // The example displays output like the following:
    //       Adding 'Africa' to the list.
    //       Adding 'Antarctica' to the list.
    //       Adding 'Asia' to the list.
    //       Adding 'Australia' to the list.
    //       Adding 'Europe' to the list.
    //       Adding 'North America' to the list.
    //       Adding 'South America' to the list.
    //
    //
    //       Africa: Area: 0, Population 0
    //       Antarctica: Area: 0, Population 0
    //       Asia: Area: 0, Population 0
    //       Australia: Area: 0, Population 0
    //       Europe: Area: 0, Population 0
    //       North America: Area: 0, Population 0
    //       South America: Area: 0, Population 0
    

ArgumentOutOfRangeException использует COR_E_ARGUMENTOUTOFRANGE HRESULT со значением 0x80131502.

Список начальных значений свойств для экземпляра ArgumentOutOfRangeException, см. в разделе ArgumentOutOfRangeException конструкторы.

Конструкторы

ArgumentOutOfRangeException()

Инициализирует новый экземпляр класса ArgumentOutOfRangeException.

ArgumentOutOfRangeException(SerializationInfo, StreamingContext)
Устаревшие..

Инициализирует новый экземпляр класса ArgumentOutOfRangeException с сериализованными данными.

ArgumentOutOfRangeException(String)

Инициализирует новый экземпляр класса ArgumentOutOfRangeException именем параметра, вызвавшего исключение.

ArgumentOutOfRangeException(String, Exception)

Инициализирует новый экземпляр класса ArgumentOutOfRangeException с заданным сообщением об ошибке и ссылкой на внутреннее исключение, которое стало причиной данного исключения.

ArgumentOutOfRangeException(String, Object, String)

Инициализирует новый экземпляр класса ArgumentOutOfRangeException с именем параметра, значением аргумента и указанным сообщением об ошибке.

ArgumentOutOfRangeException(String, String)

Инициализирует новый экземпляр класса ArgumentOutOfRangeException с именем параметра, ставшего причиной этого исключения, и указанным сообщением об ошибке.

Свойства

ActualValue

Возвращает значение аргумента, вызвавшего это исключение.

Data

Возвращает коллекцию пар «ключ-значение», предоставляющую дополнительные сведения об исключении.

(Унаследовано от Exception)
HelpLink

Получает или задает ссылку на файл справки, связанный с этим исключением.

(Унаследовано от Exception)
HResult

Возвращает или задает HRESULT — кодированное числовое значение, присвоенное определенному исключению.

(Унаследовано от Exception)
InnerException

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

(Унаследовано от Exception)
Message

Возвращает сообщение об ошибке и строковое представление недопустимого значения аргумента или только сообщение об ошибке, если значение аргумента равно null.

ParamName

Возвращает имя параметра, ставшего причиной этого исключения.

(Унаследовано от ArgumentException)
Source

Возвращает или задает имя приложения или объекта, вызывавшего ошибку.

(Унаследовано от Exception)
StackTrace

Получает строковое представление непосредственных кадров в стеке вызова.

(Унаследовано от Exception)
TargetSite

Возвращает метод, создавший текущее исключение.

(Унаследовано от Exception)

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetBaseException()

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

(Унаследовано от Exception)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetObjectData(SerializationInfo, StreamingContext)
Устаревшие..

Задает в объекте SerializationInfo недопустимое значение аргумента и дополнительные сведения об исключении.

GetObjectData(SerializationInfo, StreamingContext)
Устаревшие..

Задает объекту SerializationInfo имя параметра и дополнительную информацию об исключении.

(Унаследовано от ArgumentException)
GetType()

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

(Унаследовано от Exception)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ThrowIfEqual<T>(T, T, String)

Вызывает исключение , ArgumentOutOfRangeException если value равно other.

ThrowIfGreaterThan<T>(T, T, String)

Создает исключение , ArgumentOutOfRangeException если value больше other.

ThrowIfGreaterThanOrEqual<T>(T, T, String)

Вызывает исключение , ArgumentOutOfRangeException если value больше или равно other.

ThrowIfLessThan<T>(T, T, String)

Вызывает исключение , ArgumentOutOfRangeException если value меньше other.

ThrowIfLessThanOrEqual<T>(T, T, String)

Вызывает исключение , ArgumentOutOfRangeException если value меньше или равно other.

ThrowIfNegative<T>(T, String)

Создает исключение , ArgumentOutOfRangeException если value является отрицательным.

ThrowIfNegativeOrZero<T>(T, String)

Создает исключение , ArgumentOutOfRangeException если value имеет отрицательное значение или ноль.

ThrowIfNotEqual<T>(T, T, String)

Создает исключение , ArgumentOutOfRangeException если value не равно other.

ThrowIfZero<T>(T, String)

Создает исключение , ArgumentOutOfRangeException если value равно нулю.

ToString()

Создает и возвращает строковое представление текущего исключения.

(Унаследовано от Exception)

События

SerializeObjectState
Устаревшие..

Возникает, когда исключение сериализовано для создания объекта состояния исключения, содержащего сериализованные данные об исключении.

(Унаследовано от Exception)

Применяется к

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

См. также раздел