다음을 통해 공유


ArgumentException 클래스

메서드에 제공된 인수 중 하나가 유효하지 않을 때 throw되는 예외입니다.

네임스페이스: System
어셈블리: mscorlib(mscorlib.dll)

구문

‘선언
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class ArgumentException
    Inherits SystemException
    Implements ISerializable
‘사용 방법
Dim instance As ArgumentException
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public class ArgumentException : SystemException, ISerializable
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class ArgumentException : public SystemException, ISerializable
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public class ArgumentException extends SystemException implements ISerializable
SerializableAttribute 
ComVisibleAttribute(true) 
public class ArgumentException extends SystemException implements ISerializable

설명

ArgumentException은 메서드가 호출될 때 전달된 인수 중 적어도 하나가 호출된 메서드의 매개 변수 사양에 맞지 않는 경우 throw됩니다. ArgumentException의 모든 인스턴스는 잘못된 인수와 해당 인수에 대한 예상 값 범위를 설명하는 의미 있는 오류 메시지를 전달합니다.

ArgumentException의 기본 파생 클래스는 ArgumentNullExceptionArgumentOutOfRangeException입니다. 이 파생 클래스는 해당 클래스를 사용할 수 없는 경우를 제외하고 ArgumentException 대신 사용해야 합니다. 예를 들어, 다음과 같은 경우에 예외가 throw됩니다.

  • Null 참조(Visual Basic의 경우 Nothing) 인수를 유효한 인수로 적용하지 않는 메서드에 해당 인수가 전달되면 ArgumentNullException 예외가 throw됩니다.

  • 인수의 값이 적용할 수 있는 값 범위를 벗어난 경우(예: DateTime을 생성할 때 "46"이 달을 나타내는 인수로 전달된 경우)에는 ArgumentOutOfRangeException 예외가 throw됩니다.

메서드를 호출할 때 인수를 사용하지 않았거나 해당 오류가 인수와 관련되지 않은 경우에는 InvalidOperationException이 사용됩니다.

ArgumentException은 0x80070057 값을 가지는 HRESULT COR_E_ARGUMENT를 사용합니다.

ArgumentException 인스턴스의 초기 속성 값 목록에 대한 자세한 내용은 ArgumentException 생성자를 참조하십시오.

예제

다음 예제에서는 ArgumentException을 throw하고 catch하는 방법을 보여 줍니다.

using System;

public sealed class App 
{
    static void Main() 
    {
        // ArgumentException is not thrown because 10 is an even number.
        Console.WriteLine("10 divided by 2 is {0}", DivideByTwo(10));
        try 
        {
             // ArgumentException is thrown because 7 is not an even number.
             Console.WriteLine("7 divided by 2 is {0}", DivideByTwo(7));
        }
        catch (ArgumentException)
        {
            // Show the user that 7 cannot be divided by 2.
            Console.WriteLine("7 is not divided by 2 integrally.");
        }
    }

    static int DivideByTwo(int num) 
    {
        // If num is an odd number, throw an ArgumentException.
        if ((num & 1) == 1)
            throw new ArgumentException("Number must be even", "num");

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


// This code produces the following output.
// 
// 10 divided by 2 is 5
// 7 is not divided by 2 integrally.
using namespace System;

int DivideByTwo(int num)
{
    // If num is an odd number, throw an ArgumentException.
    if ((num & 1) == 1)
    {
        throw gcnew ArgumentException("Number must be even", "num");
    }
    // num is even, return half of its value.
    return num / 2;
}

int main()
{
    // ArgumentException is not thrown because 10 is an even number.
    Console::WriteLine("10 divided by 2 is {0}", DivideByTwo(10));
    try
    {
        // ArgumentException is thrown because 7 is not an even number.
        Console::WriteLine("7 divided by 2 is {0}", DivideByTwo(7));
    }
    catch (ArgumentException^)
    {
        // Show the user that 7 cannot be divided by 2.
        Console::WriteLine("7 is not divided by 2 integrally.");
    }
}

// This code produces the following output.
//
// 10 divided by 2 is 5
// 7 is not divided by 2 integrally.

상속 계층 구조

System.Object
   System.Exception
     System.SystemException
      System.ArgumentException
         파생 클래스

스레드로부터의 안전성

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

ArgumentException 멤버
System 네임스페이스
Exception

기타 리소스

예외 처리 및 Throw