ArgumentException Classe

Definição

A exceção que é gerada quando um dos argumentos fornecidos para um método não é válido.

public ref class ArgumentException : Exception
public ref class ArgumentException : SystemException
public class ArgumentException : Exception
public class ArgumentException : SystemException
[System.Serializable]
public class ArgumentException : SystemException
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class ArgumentException : SystemException
type ArgumentException = class
    inherit Exception
type ArgumentException = class
    inherit SystemException
type ArgumentException = class
    inherit SystemException
    interface ISerializable
[<System.Serializable>]
type ArgumentException = class
    inherit SystemException
    interface ISerializable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ArgumentException = class
    inherit SystemException
    interface ISerializable
Public Class ArgumentException
Inherits Exception
Public Class ArgumentException
Inherits SystemException
Herança
ArgumentException
Herança
ArgumentException
Derivado
Atributos
Implementações

Exemplos

O exemplo a seguir demonstra como lançar e capturar um ArgumentException. Ele usa ArgumentException.GetType(). Propriedade Name para exibir o nome do objeto de exceção e também usa a Message propriedade para exibir o texto da mensagem de exceção.

using namespace System;

static int DivideByTwo(int num) 
{
    // If num is an odd number, throw an ArgumentException.
    if ((num & 1) == 1)
        throw gcnew ArgumentException(String::Format("{0} is not an even number", num), 
                                      "num");

    // num is even, return half of its value.
    return num / 2;
}

void main() 
{
    // Define some integers for a division operation.
    array<int>^ values = { 10, 7 };
    for each (int value in values) {
        try {
           Console::WriteLine("{0} divided by 2 is {1}", value, DivideByTwo(value));
        }
        catch (ArgumentException^ e) {
           Console::WriteLine("{0}: {1}", e->GetType()->Name, e->Message);
        }
        Console::WriteLine();
    }
}
// This example displays the following output:
//     10 divided by 2 is 5
//     
//     ArgumentException: 7 is not an even number
//     Parameter name: num
using System;

public class Example
{
    static void Main()
    {
        // Define some integers for a division operation.
        int[] values = { 10, 7 };
        foreach (var value in values) {
            try {
               Console.WriteLine("{0} divided by 2 is {1}", value, DivideByTwo(value));
            }
            catch (ArgumentException e) {
               Console.WriteLine("{0}: {1}", e.GetType().Name, e.Message);
            }
            Console.WriteLine();
        }
    }

    static int DivideByTwo(int num)
    {
        // If num is an odd number, throw an ArgumentException.
        if ((num & 1) == 1)
            throw new ArgumentException(String.Format("{0} is not an even number", num),
                                      "num");

        // num is even, return half of its value.
        return num / 2;
    }
}
// This example displays the following output:
//     10 divided by 2 is 5
//
//     ArgumentException: 7 is not an even number
//     Parameter name: num
open System

let divideByTwo num =
    // If num is an odd number, throw an ArgumentException.
    if num % 2 = 1 then
        invalidArg "num" $"{num} is not an even number"

    // num is even, return half of its value.
    num / 2;

// Define some integers for a division operation.
let values = [ 10; 7 ]
for value in values do
    try 
        printfn $"{value} divided by 2 is {divideByTwo value}"
    with
    | :? ArgumentException as e ->
        printfn $"{e.GetType().Name}: {e.Message}"
    
    printfn ""

// This example displays the following output:
//     10 divided by 2 is 5
//
//     ArgumentException: 7 is not an even number (Parameter 'num')
Public Class Example
    Public Shared Sub Main()
        ' Define some integers for a division operation.
        Dim values() As Integer = { 10, 7 }

        For Each value In values
            Try 
               Console.WriteLine("{0} divided by 2 is {1}", value, DivideByTwo(value))
            Catch e As ArgumentException
               Console.WriteLine("{0}: {1}", e.GetType().Name, e.Message)
            End Try
            Console.WriteLine()
        Next
    End Sub
    
    Private Shared Function DivideByTwo(ByVal num As Integer) As Integer
        ' If num is an odd number, throw an ArgumentException.
        If (num And 1) = 1 Then
            Throw New ArgumentException(String.Format("{0} is not an even number", num), 
                                      "num")
        End If
        Return num \ 2
    End Function
End Class
' The example displays the following output:
'     10 divided by 2 is 5
'     
'     ArgumentException: 7 is not an even number
'     Parameter name: num

Comentários

ArgumentException é gerado quando um método é invocado e pelo menos um dos argumentos passados não atende à especificação de parâmetro do método chamado. A ParamName propriedade identifica o argumento inválido.

Mais comumente, um ArgumentException é gerado pelo Common Language Runtime ou outra biblioteca de classes e indica o erro do desenvolvedor. Se você lançar um ArgumentException do código, deverá garantir que a propriedade da Message exceção inclua uma mensagem de erro significativa que descreva o argumento inválido e o intervalo esperado de valores para o argumento.

As classes derivadas primárias de ArgumentException são ArgumentNullException e ArgumentOutOfRangeException. Essas classes derivadas devem ser usadas em vez de ArgumentException, exceto em situações em que nenhuma das classes derivadas é aceitável. Por exemplo, as exceções devem ser geradas por:

  • ArgumentNullException sempre que null é passado para um método que não o aceita como um argumento válido.

  • ArgumentOutOfRangeException quando o valor de um argumento está fora do intervalo de valores aceitáveis; por exemplo, quando o valor "46" é passado como o argumento de mês durante a criação de um DateTime.

Se a chamada de método não tiver nenhum argumento ou se a falha não envolver os argumentos em si, deverá InvalidOperationException ser usada.

ArgumentException usa o COR_E_ARGUMENT HRESULT, que tem o valor 0x80070057.

Para obter uma lista de valores de propriedade inicial para uma instância do ArgumentException, consulte o ArgumentException construtores.

Em F#, você pode usar a função invalidArg para gerar e gerar um ArgumentException.

Construtores

ArgumentException()

Inicializa uma nova instância da classe ArgumentException.

ArgumentException(SerializationInfo, StreamingContext)
Obsoleto.

Inicializa uma nova instância da classe ArgumentException com dados serializados.

ArgumentException(String)

Inicializa uma nova instância da classe ArgumentException com uma mensagem de erro especificada.

ArgumentException(String, Exception)

Inicializa uma nova instância da classe ArgumentException com uma mensagem de erro especificada e uma referência à exceção interna que é a causa da exceção.

ArgumentException(String, String)

Inicializa uma nova instância da classe ArgumentException com uma mensagem de erro especificada e o nome do parâmetro que causa essa exceção.

ArgumentException(String, String, Exception)

Inicializa uma nova instância da classe ArgumentException com uma mensagem de erro especificada, o nome do parâmetro e uma referência à exceção interna que é a causa dessa 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 a mensagem de erro e o nome do parâmetro ou apenas a mensagem de erro se não houver nenhum nome de parâmetro definido.

ParamName

Obtém o nome do parâmetro que causa essa exceção.

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)
Obsoleto.

Define o objeto SerializationInfo com o nome do parâmetro e informações adicionais de exceção.

GetObjectData(SerializationInfo, StreamingContext)
Obsoleto.

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)
ThrowIfNullOrEmpty(String, String)

Gera uma exceção se argument estiver null ou estiver vazia.

ThrowIfNullOrWhiteSpace(String, String)

Gera uma exceção se argument for null, vazio ou consistir apenas em caracteres de espaço em branco.

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)

Aplica-se a

Confira também