IndexOutOfRangeException Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
A exceção gerada quando ocorre uma tentativa de acessar um elemento de uma matriz ou coleção com um índice que está fora dos limites.
public ref class IndexOutOfRangeException sealed : Exception
public ref class IndexOutOfRangeException sealed : SystemException
public sealed class IndexOutOfRangeException : Exception
public sealed class IndexOutOfRangeException : SystemException
[System.Serializable]
public sealed class IndexOutOfRangeException : SystemException
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class IndexOutOfRangeException : SystemException
type IndexOutOfRangeException = class
inherit Exception
type IndexOutOfRangeException = class
inherit SystemException
[<System.Serializable>]
type IndexOutOfRangeException = class
inherit SystemException
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type IndexOutOfRangeException = class
inherit SystemException
Public NotInheritable Class IndexOutOfRangeException
Inherits Exception
Public NotInheritable Class IndexOutOfRangeException
Inherits SystemException
- Herança
- Herança
- Atributos
Comentários
Uma IndexOutOfRangeException exceção é gerada quando um índice inválido é usado para acessar um membro de uma matriz ou uma coleção, ou para ler ou gravar de um local específico em um buffer. Essa exceção herda da Exception classe, mas não adiciona membros exclusivos.
Normalmente, uma exceção IndexOutOfRangeException é gerada como resultado de um erro do desenvolvedor. Em vez de lidar com a exceção, você deve diagnosticar a causa do erro e corrigir seu código. As causas mais comuns do erro são:
Esquecendo que o limite superior de uma coleção ou uma matriz baseada em zero é um a menos do que o número de membros ou elementos, como ilustra o exemplo a seguir.
using System; using System.Collections.Generic; public class Example { public static void Main() { List<Char> characters = new List<Char>(); characters.InsertRange(0, new Char[] { 'a', 'b', 'c', 'd', 'e', 'f' } ); for (int ctr = 0; ctr <= characters.Count; ctr++) Console.Write("'{0}' ", characters[ctr]); } } // The example displays the following output: // 'a' 'b' 'c' 'd' 'e' 'f' // 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 Example.Main()
let characters = ResizeArray() characters.InsertRange(0, [| 'a'; 'b'; 'c'; 'd'; 'e'; 'f' |]) for i = 0 to characters.Count do printf $"'{characters[i]}' " // The example displays the following output: // 'a' 'b' 'c' 'd' 'e' 'f' // 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 <StartupCode$fs>.main@()
Imports System.Collections.Generic Module Example Public Sub Main() Dim characters As New List(Of Char)() characters.InsertRange(0, { "a"c, "b"c, "c"c, "d"c, "e"c, "f"c} ) For ctr As Integer = 0 To characters.Count Console.Write("'{0}' ", characters(ctr)) Next End Sub End Module ' The example displays the following output: ' 'a' 'b' 'c' 'd' 'e' 'f' ' 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.Collections.Generic.List`1.get_Item(Int32 index) ' at Example.Main()
Para corrigir o erro, você pode usar código como o seguinte.
using System; using System.Collections.Generic; public class Example { public static void Main() { List<Char> characters = new List<Char>(); characters.InsertRange(0, new Char[] { 'a', 'b', 'c', 'd', 'e', 'f' } ); for (int ctr = 0; ctr < characters.Count; ctr++) Console.Write("'{0}' ", characters[ctr]); } } // The example displays the following output: // 'a' 'b' 'c' 'd' 'e' 'f'
let characters = ResizeArray() characters.InsertRange(0, [| 'a'; 'b'; 'c'; 'd'; 'e'; 'f' |]) for i = 0 to characters.Count - 1 do printf $"'{characters[i]}' " // The example displays the following output: // 'a' 'b' 'c' 'd' 'e' 'f'
Imports System.Collections.Generic Module Example Public Sub Main() Dim characters As New List(Of Char)() characters.InsertRange(0, { "a"c, "b"c, "c"c, "d"c, "e"c, "f"c} ) For ctr As Integer = 0 To characters.Count - 1 Console.Write("'{0}' ", characters(ctr)) Next End Sub End Module ' The example displays the following output: ' 'a' 'b' 'c' 'd' 'e' 'f'
Como alternativa, em vez de iterar todos os elementos na matriz pelo índice, você pode usar a
foreach
instrução (em C#), afor...in
instrução (em F#) ou aFor Each
instrução (em Visual Basic).Tentando atribuir um elemento de matriz a outra matriz que não foi dimensionada adequadamente e que tem menos elementos do que a matriz original. O exemplo a seguir tenta atribuir o último elemento na
value1
matriz ao mesmo elemento navalue2
matriz. No entanto, avalue2
matriz foi dimensionada incorretamente para ter seis em vez de sete elementos. Como resultado, a atribuição gera uma exceção IndexOutOfRangeException .public class Example { public static void Main() { int[] values1 = { 3, 6, 9, 12, 15, 18, 21 }; int[] values2 = new int[6]; // Assign last element of the array to the new array. values2[values1.Length - 1] = values1[values1.Length - 1]; } } // The example displays the following output: // Unhandled Exception: // System.IndexOutOfRangeException: // Index was outside the bounds of the array. // at Example.Main()
let values1 = [| 3; 6; 9; 12; 15; 18; 21 |] let values2 = Array.zeroCreate<int> 6 // Assign last element of the array to the new array. values2[values1.Length - 1] <- values1[values1.Length - 1]; // The example displays the following output: // Unhandled Exception: // System.IndexOutOfRangeException: // Index was outside the bounds of the array. // at <StartupCode$fs>.main@()
Module Example Public Sub Main() Dim values1() As Integer = { 3, 6, 9, 12, 15, 18, 21 } Dim values2(5) As Integer ' Assign last element of the array to the new array. values2(values1.Length - 1) = values1(values1.Length - 1) End Sub End Module ' The example displays the following output: ' Unhandled Exception: ' System.IndexOutOfRangeException: ' Index was outside the bounds of the array. ' at Example.Main()
Usando um valor retornado por um método de pesquisa para iterar uma parte de uma matriz ou coleção começando em uma posição de índice específica. Se você esquecer de verificar se a operação de pesquisa encontrou uma correspondência, o runtime lançará uma exceção IndexOutOfRangeException , conforme mostrado neste exemplo.
using System; using System.Collections.Generic; public class Example { static List<int> numbers = new List<int>(); public static void Main() { int startValue; string[] args = Environment.GetCommandLineArgs(); if (args.Length < 2) startValue = 2; else if (! Int32.TryParse(args[1], out startValue)) startValue = 2; ShowValues(startValue); } private static void ShowValues(int startValue) { // Create a collection with numeric values. if (numbers.Count == 0) numbers.AddRange( new int[] { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22} ); // Get the index of a startValue. Console.WriteLine("Displaying values greater than or equal to {0}:", startValue); int startIndex = numbers.IndexOf(startValue); // Display all numbers from startIndex on. for (int ctr = startIndex; ctr < numbers.Count; ctr++) Console.Write(" {0}", numbers[ctr]); } } // The example displays the following output if the user supplies // 7 as a command-line parameter: // Displaying values greater than or equal to 7: // // 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.Collections.Generic.List`1.get_Item(Int32 index) // at Example.ShowValues(Int32 startValue) // at Example.Main()
open System let numbers = ResizeArray() let showValues startValue = // Create a collection with numeric values. if numbers.Count = 0 then numbers.AddRange [| 2..2..22 |] // Get the index of a startValue. printfn $"Displaying values greater than or equal to {startValue}:" let startIndex = numbers.IndexOf startValue // Display all numbers from startIndex on. for i = startIndex to numbers.Count - 1 do printf $" {numbers[i]}" let startValue = let args = Environment.GetCommandLineArgs() if args.Length < 2 then 2 else match Int32.TryParse args[1] with | true, v -> v | _ -> 2 showValues startValue // The example displays the following output if the user supplies // 7 as a command-line parameter: // Displaying values greater than or equal to 7: // // 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.Collections.Generic.List`1.get_Item(Int32 index) // at Example.ShowValues(Int32 startValue) // at <StartupCode$fs>.main@()
Imports System.Collections.Generic Module Example Dim numbers As New List(Of Integer) Public Sub Main() Dim startValue As Integer Dim args() As String = Environment.GetCommandLineArgs() If args.Length < 2 Then startValue = 2 Else If Not Int32.TryParse(args(1), startValue) Then startValue = 2 End If End If ShowValues(startValue) End Sub Private Sub ShowValues(startValue As Integer) ' Create a collection with numeric values. If numbers.Count = 0 Then numbers.AddRange( { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22} ) End If ' Get the index of a particular number, in this case 7. Console.WriteLine("Displaying values greater than or equal to {0}:", startValue) Dim startIndex As Integer = numbers.IndexOf(startValue) ' Display all numbers from startIndex on. For ctr As Integer = startIndex To numbers.Count - 1 Console.Write(" {0}", numbers(ctr)) Next End Sub End Module ' The example displays the following output if the user supplies ' 7 as a command-line parameter: ' Displaying values greater than or equal to 7: ' ' 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.Collections.Generic.List`1.get_Item(Int32 index) ' at Example.ShowValues(Int32 startValue) ' at Example.Main()
Nesse caso, o List<T>.IndexOf método retorna -1, que é um valor de índice inválido, quando não consegue encontrar uma correspondência. Para corrigir esse erro, verifique o valor retornado do método de pesquisa antes de iterar a matriz, conforme mostrado neste exemplo.
using System; using System.Collections.Generic; public class Example { static List<int> numbers = new List<int>(); public static void Main() { int startValue; string[] args = Environment.GetCommandLineArgs(); if (args.Length < 2) startValue = 2; else if (! Int32.TryParse(args[1], out startValue)) startValue = 2; ShowValues(startValue); } private static void ShowValues(int startValue) { // Create a collection with numeric values. if (numbers.Count == 0) numbers.AddRange( new int[] { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22} ); // Get the index of startValue. int startIndex = numbers.IndexOf(startValue); if (startIndex < 0) { Console.WriteLine("Unable to find {0} in the collection.", startValue); } else { // Display all numbers from startIndex on. Console.WriteLine("Displaying values greater than or equal to {0}:", startValue); for (int ctr = startIndex; ctr < numbers.Count; ctr++) Console.Write(" {0}", numbers[ctr]); } } } // The example displays the following output if the user supplies // 7 as a command-line parameter: // Unable to find 7 in the collection.
open System open System.Collections.Generic let numbers = new List<int>() let showValues startValue = // Create a collection with numeric values. if numbers.Count = 0 then numbers.AddRange [| 2..2..22 |] // Get the index of startValue. let startIndex = numbers.IndexOf startValue if startIndex < 0 then printfn $"Unable to find {startValue} in the collection." else // Display all numbers from startIndex on. printfn $"Displaying values greater than or equal to {startValue}:" for i = startIndex to numbers.Count - 1 do printf $" {numbers[i]}" let startValue = let args = Environment.GetCommandLineArgs() if args.Length < 2 then 2 else match Int32.TryParse args[1] with | true, v -> v | _ -> 2 showValues startValue // The example displays the following output if the user supplies // 7 as a command-line parameter: // Unable to find 7 in the collection.
Imports System.Collections.Generic Module Example Dim numbers As New List(Of Integer) Public Sub Main() Dim startValue As Integer Dim args() As String = Environment.GetCommandLineArgs() If args.Length < 2 Then startValue = 2 Else If Not Int32.TryParse(args(1), startValue) Then startValue = 2 End If End If ShowValues(startValue) End Sub Private Sub ShowValues(startValue As Integer) ' Create a collection with numeric values. If numbers.Count = 0 Then numbers.AddRange( { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22} ) End If ' Get the index of startValue. Dim startIndex As Integer = numbers.IndexOf(startValue) If startIndex < 0 Then Console.WriteLine("Unable to find {0} in the collection.", startValue) Else ' Display all numbers from startIndex on. Console.WriteLine("Displaying values greater than or equal to {0}:", startValue) For ctr As Integer = startIndex To numbers.Count - 1 Console.Write(" {0}", numbers(ctr)) Next End If End Sub End Module ' The example displays the following output if the user supplies ' Unable to find 7 in the collection.
Tentando usar ou enumerar um conjunto de resultados, uma coleção ou uma matriz retornada por uma consulta sem testar se o objeto retornado tem dados válidos.
Usando um valor computado para definir o índice inicial, o índice final ou o número de itens a serem iterados. Se o resultado da computação for inesperado, isso poderá resultar em uma exceção IndexOutOfRangeException . Você deve verificar a lógica do programa no cálculo do valor do índice e validar o valor antes de iterar a matriz ou coleção. Todas as condições a seguir devem ser verdadeiras; caso contrário, uma exceção IndexOutOfRangeException é gerada:
O índice inicial deve ser maior ou igual à Array.GetLowerBound dimensão da matriz que você deseja iterar, ou maior ou igual a 0 para uma coleção.
O índice final não pode exceder Array.GetUpperBound a dimensão da matriz que você deseja iterar ou não pode ser maior ou igual à
Count
propriedade de uma coleção.A seguinte equação deve ser verdadeira para a dimensão da matriz que você deseja iterar:
start_index >= lower_bound And start_index + items_to_iterate - 1 <= upper_bound
Para uma coleção, a seguinte equação deve ser verdadeira:
start_index >= 0 And start_index + items_to_iterate <= Count
Dica
O índice inicial de uma matriz ou coleção nunca pode ser um número negativo.
Supondo que uma matriz deve ser baseada em zero. Matrizes que não são baseadas em zero podem ser criadas pelo Array.CreateInstance(Type, Int32[], Int32[]) método e podem ser retornadas pela interoperabilidade COM, embora não sejam compatíveis com CLS. O exemplo a seguir ilustra o IndexOutOfRangeException que é gerado quando você tenta iterar uma matriz não baseada em zero criada pelo Array.CreateInstance(Type, Int32[], Int32[]) método.
using System; public class Example { public static void Main() { Array values = Array.CreateInstance(typeof(int), new int[] { 10 }, new int[] { 1 }); int value = 2; // Assign values. for (int ctr = 0; ctr < values.Length; ctr++) { values.SetValue(value, ctr); value *= 2; } // Display values. for (int ctr = 0; ctr < values.Length; ctr++) Console.Write("{0} ", values.GetValue(ctr)); } } // The example displays the following output: // Unhandled Exception: // System.IndexOutOfRangeException: Index was outside the bounds of the array. // at System.Array.InternalGetReference(Void* elemRef, Int32 rank, Int32* pIndices) // at System.Array.SetValue(Object value, Int32 index) // at Example.Main()
open System let values = Array.CreateInstance(typeof<int>, [| 10 |], [| 1 |]) let mutable value = 2 // Assign values. for i = 0 to values.Length - 1 do values.SetValue(value, i) value <- value * 2 // Display values. for i = 0 to values.Length - 1 do printf $"{values.GetValue i} " // The example displays the following output: // Unhandled Exception: // System.IndexOutOfRangeException: Index was outside the bounds of the array. // at System.Array.InternalGetReference(Void* elemRef, Int32 rank, Int32* pIndices) // at System.Array.SetValue(Object value, Int32 index) // at <StartupCode$fs>.main@()
Module Example Public Sub Main() Dim values = Array.CreateInstance(GetType(Integer), { 10 }, { 1 }) Dim value As Integer = 2 ' Assign values. For ctr As Integer = 0 To values.Length - 1 values(ctr) = value value *= 2 Next ' Display values. For ctr As Integer = 0 To values.Length - 1 Console.Write("{0} ", values(ctr)) Next End Sub End Module ' The example displays the following output: ' Unhandled Exception: ' System.IndexOutOfRangeException: Index was outside the bounds of the array. ' at System.Array.InternalGetReference(Void* elemRef, Int32 rank, Int32* pIndices) ' at System.Array.SetValue(Object value, Int32 index) ' at Microsoft.VisualBasic.CompilerServices.NewLateBinding.ObjectLateIndexSetComplex(Obje ' ct Instance, Object[] Arguments, String[] ArgumentNames, Boolean OptimisticSet, Boolean RV ' alueBase) ' at Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateIndexSet(Object Instance, ' Object[] Arguments, String[] ArgumentNames) ' at Example.Main()
Para corrigir o erro, como faz o exemplo a seguir, você pode chamar o GetLowerBound método em vez de fazer suposições sobre o índice inicial de uma matriz.
using System; public class Example { public static void Main() { Array values = Array.CreateInstance(typeof(int), new int[] { 10 }, new int[] { 1 }); int value = 2; // Assign values. for (int ctr = values.GetLowerBound(0); ctr <= values.GetUpperBound(0); ctr++) { values.SetValue(value, ctr); value *= 2; } // Display values. for (int ctr = values.GetLowerBound(0); ctr <= values.GetUpperBound(0); ctr++) Console.Write("{0} ", values.GetValue(ctr)); } } // The example displays the following output: // 2 4 8 16 32 64 128 256 512 1024
open System let values = Array.CreateInstance(typeof<int>, [| 10 |], [| 1 |]) let mutable value = 2 // Assign values. for i = values.GetLowerBound 0 to values.GetUpperBound 0 do values.SetValue(value, i) value <- value * 2 // Display values. for i = values.GetLowerBound 0 to values.GetUpperBound 0 do printf $"{values.GetValue i} " // The example displays the following output: // 2 4 8 16 32 64 128 256 512 1024
Module Example Public Sub Main() Dim values = Array.CreateInstance(GetType(Integer), { 10 }, { 1 }) Dim value As Integer = 2 ' Assign values. For ctr As Integer = values.GetLowerBound(0) To values.GetUpperBound(0) values(ctr) = value value *= 2 Next ' Display values. For ctr As Integer = values.GetLowerBound(0) To values.GetUpperBound(0) Console.Write("{0} ", values(ctr)) Next End Sub End Module ' The example displays the following output: ' 2 4 8 16 32 64 128 256 512 1024
Observe que quando você chama o GetLowerBound método para obter o índice inicial de uma matriz, você também deve chamar o Array.GetUpperBound(Int32) método para obter seu índice final.
Confundindo um índice e o valor nesse índice em uma matriz ou coleção numérica. Esse problema geralmente ocorre ao usar a
foreach
instrução (em C#), afor...in
instrução (em F#) ou a instruçãoFor Each
(em Visual Basic). O exemplo a seguir ilustra o problema.using System; public class Example { public static void Main() { // Generate array of random values. int[] values = PopulateArray(5, 10); // Display each element in the array. foreach (var value in values) Console.Write("{0} ", values[value]); } private static int[] PopulateArray(int items, int maxValue) { int[] values = new int[items]; Random rnd = new Random(); for (int ctr = 0; ctr < items; ctr++) values[ctr] = rnd.Next(0, maxValue + 1); return values; } } // The example displays output like the following: // 6 4 4 // Unhandled Exception: System.IndexOutOfRangeException: // Index was outside the bounds of the array. // at Example.Main()
open System let populateArray items maxValue = let rnd = Random() [| for i = 0 to items - 1 do rnd.Next(0, maxValue + 1) |] // Generate array of random values. let values = populateArray 5 10 // Display each element in the array. for value in values do printf $"{values[value]} " // The example displays output like the following: // 6 4 4 // Unhandled Exception: System.IndexOutOfRangeException: // Index was outside the bounds of the array. // at <StartupCode$fs>.main@()
Module Example Public Sub Main() ' Generate array of random values. Dim values() As Integer = PopulateArray(5, 10) ' Display each element in the array. For Each value In values Console.Write("{0} ", values(value)) Next End Sub Private Function PopulateArray(items As Integer, maxValue As Integer) As Integer() Dim values(items - 1) As Integer Dim rnd As New Random() For ctr As Integer = 0 To items - 1 values(ctr) = rnd.Next(0, maxValue + 1) Next Return values End Function End Module ' The example displays output like the following: ' 6 4 4 ' Unhandled Exception: System.IndexOutOfRangeException: ' Index was outside the bounds of the array. ' at Example.Main()
A construção de iteração retorna cada valor em uma matriz ou coleção, não em seu índice. Para eliminar a exceção, use este código.
using System; public class Example { public static void Main() { // Generate array of random values. int[] values = PopulateArray(5, 10); // Display each element in the array. foreach (var value in values) Console.Write("{0} ", value); } private static int[] PopulateArray(int items, int maxValue) { int[] values = new int[items]; Random rnd = new Random(); for (int ctr = 0; ctr < items; ctr++) values[ctr] = rnd.Next(0, maxValue + 1); return values; } } // The example displays output like the following: // 10 6 7 5 8
open System let populateArray items maxValue = let rnd = Random() [| for i = 0 to items - 1 do rnd.Next(0, maxValue + 1) |] // Generate array of random values. let values = populateArray 5 10 // Display each element in the array. for value in values do printf $"{value} " // The example displays output like the following: // 10 6 7 5 8
Module Example Public Sub Main() ' Generate array of random values. Dim values() As Integer = PopulateArray(5, 10) ' Display each element in the array. For Each value In values Console.Write("{0} ", value) Next End Sub Private Function PopulateArray(items As Integer, maxValue As Integer) As Integer() Dim values(items - 1) As Integer Dim rnd As New Random() For ctr As Integer = 0 To items - 1 values(ctr) = rnd.Next(0, maxValue + 1) Next Return values End Function End Module ' The example displays output like the following: ' 10 6 7 5 8
Fornecendo um nome de coluna inválido para a DataView.Sort propriedade.
Violando a segurança do thread. Operações como ler do mesmo StreamReader objeto, gravar no mesmo StreamWriter objeto de vários threads ou enumerar os objetos em um Hashtable de threads diferentes podem gerar um IndexOutOfRangeException se o objeto não for acessado de forma thread-safe. Essa exceção normalmente é intermitente porque depende de uma condição de corrida.
O uso de valores de índice codificados em código para manipular uma matriz provavelmente gerará uma exceção se o valor do índice estiver incorreto ou inválido ou se o tamanho da matriz que está sendo manipulada for inesperado. Para impedir que uma operação gere uma exceção IndexOutOfRangeException , você pode fazer o seguinte:
Iterar os elementos da matriz usando a instrução foreach (em C#), o para... na instrução (em F#) ou no For Each... Próxima construção (em Visual Basic) em vez de iterar elementos por índice.
Iterar os elementos por índice começando com o índice retornado pelo Array.GetLowerBound método e terminando com o índice retornado pelo Array.GetUpperBound método.
Se você estiver atribuindo elementos em uma matriz a outra, verifique se a matriz de destino tem pelo menos tantos elementos quanto a matriz de origem comparando suas Array.Length propriedades.
Para obter uma lista de valores de propriedade inicial para uma instância do IndexOutOfRangeException, consulte o IndexOutOfRangeException construtores.
As seguintes instruções de IL (linguagem intermediária) lançam IndexOutOfRangeException:
Ldelem.<type>
Ldelema
Stelem.<type>
IndexOutOfRangeException usa o COR_E_INDEXOUTOFRANGE HRESULT, que tem o valor 0x80131508.
Construtores
IndexOutOfRangeException() |
Inicializa uma nova instância da classe IndexOutOfRangeException. |
IndexOutOfRangeException(String) |
Inicializa uma nova instância da classe IndexOutOfRangeException com uma mensagem de erro especificada. |
IndexOutOfRangeException(String, Exception) |
Inicializa uma nova instância da classe IndexOutOfRangeException com uma mensagem de erro especificada e uma referência à exceção interna que é a causa da exceção. |
Propriedades
Data |
Obtém uma coleção de pares de chave/valor que fornecem informações definidas pelo usuário adicionais sobre a exceção. (Herdado de Exception) |
HelpLink |
Obtém ou define um link para o arquivo de ajuda associado a essa exceção. (Herdado de Exception) |
HResult |
Obtém ou define HRESULT, um valor numérico codificado que é atribuído a uma exceção específica. (Herdado de Exception) |
InnerException |
Obtém a instância Exception que causou a exceção atual. (Herdado de Exception) |
Message |
Obtém uma mensagem que descreve a exceção atual. (Herdado de Exception) |
Source |
Obtém ou define o nome do aplicativo ou objeto que causa o erro. (Herdado de Exception) |
StackTrace |
Obtém uma representação de cadeia de caracteres de quadros imediatos na pilha de chamadas. (Herdado de Exception) |
TargetSite |
Obtém o método que gerou a exceção atual. (Herdado de Exception) |
Métodos
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetBaseException() |
Quando substituído em uma classe derivada, retorna a Exception que é a causa raiz de uma ou mais exceções subsequentes. (Herdado de Exception) |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetObjectData(SerializationInfo, StreamingContext) |
Quando substituído em uma classe derivada, define o SerializationInfo com informações sobre a exceção. (Herdado de Exception) |
GetType() |
Obtém o tipo de runtime da instância atual. (Herdado de Exception) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
ToString() |
Cria e retorna uma representação de cadeia de caracteres da exceção atual. (Herdado de Exception) |
Eventos
SerializeObjectState |
Obsoleto.
Ocorre quando uma exceção é serializada para criar um objeto de estado de exceção que contém dados serializados sobre a exceção. (Herdado de Exception) |