FormatException 클래스

정의

인수의 형식이 올바르지 않거나 합성 서식 문자열이 잘못 만들어진 경우 예외가 throw됩니다.The exception that is thrown when the format of an argument is invalid, or when a composite format string is not well formed.

public ref class FormatException : Exception
public ref class FormatException : SystemException
public class FormatException : Exception
public class FormatException : SystemException
[System.Serializable]
public class FormatException : SystemException
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class FormatException : SystemException
type FormatException = class
    inherit Exception
type FormatException = class
    inherit SystemException
[<System.Serializable>]
type FormatException = class
    inherit SystemException
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type FormatException = class
    inherit SystemException
Public Class FormatException
Inherits Exception
Public Class FormatException
Inherits SystemException
상속
FormatException
상속
FormatException
파생
특성

설명

FormatException다음 이유 중 하나로 인해 예외가 throw 될 수 있습니다.A FormatException exception can be thrown for one of the following reasons:

  • 문자열을 다른 데이터 형식으로 변환 하는 메서드를 호출 하는 경우 문자열은 필요한 패턴을 따르지 않습니다.In a call to a method that converts a string to some other data type, the string doesn't conform to the required pattern. 이는 일반적으로 Convert Parse 일부 형식의 클래스 메서드와 및 메서드를 호출할 때 발생 합니다 ParseExact .This typically occurs when calling some methods of the Convert class and the Parse and ParseExact methods of some types.

    대부분의 경우 특히 변환 중인 문자열이 사용자가 입력 하거나 파일에서 읽은 경우에는 블록을 사용 하 try/catchFormatException 변환이 실패 한 경우 예외를 처리 해야 합니다.In most cases, particularly if the string that you're converting is input by a user or read from a file, you should use a try/catch block and handle the FormatException exception if the conversion is unsuccessful. 변환 메서드 호출을 TryParse 또는 TryParseExact 메서드 (있는 경우)에 대 한 호출로 바꿀 수도 있습니다.You can also replace the call to the conversion method with a call to a TryParse or TryParseExact method, if one exists. 그러나 FormatException 미리 정의 되거나 하드 코드 된 문자열을 구문 분석 하려고 할 때 throw 되는 예외는 프로그램 오류를 나타냅니다.However, a FormatException exception that is thrown when you're trying to parse a predefined or hard-coded string indicates a program error. 이 경우 예외를 처리 하는 대신 오류를 수정 해야 합니다.In this case, you should correct the error rather than handle the exception.

    문자열을 네임 스페이스의 다음 형식으로 변환 하면 System 예외가 throw 될 수 있습니다 FormatException .The conversion of a string to the following types in the System namespace can throw a FormatException exception:

    • Boolean.Boolean. Boolean.Parse(String)Convert.ToBoolean(String) 메서드는 문자열을 "true", "true", "false" 또는 "false"로 변환 해야 합니다.The Boolean.Parse(String) and Convert.ToBoolean(String) methods require the string to be converted to be "True", "true", "False", or "false". 다른 모든 값은 예외를 throw FormatException 합니다.Any other value throws a FormatException exception.

    • DateTimeDateTimeOffset을 참조하세요.DateTime and DateTimeOffset. 모든 날짜 및 시간 데이터를 특정 문화권의 서식 규칙에 따라 해석 됩니다: 현재 스레드 문화권 (또는 경우에 따라 현재 애플리케이션 도메인 문화권), 고정 문화권 또는 지정된 된 문화권입니다.All date and time data is interpreted based on the formatting conventions of a particular culture: either the current thread culture (or, in some cases, the current application domain culture), the invariant culture, or a specified culture. 및 메서드를 호출 하는 경우 DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles) 날짜 및 시간 데이터는 하나 이상의 표준 형식 문자열이 나 메서드 호출에서 인수로 제공 되는 사용자 지정 형식 문자열 에 의해 지정 된 패턴과 정확히 일치 해야 합니다.When you call the DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) and DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles) methods, date and time data must also conform exactly to a pattern specified by one or more standard format strings or custom format strings that are provided as arguments in the method call. 예상 되는 문화권별 패턴을 따르지 않는 경우 FormatException 예외가 throw 됩니다.If it doesn't conform to an expected culture-specific pattern, a FormatException exception is thrown. 즉, 한 시스템에서 문화권별 형식으로 저장 된 날짜 및 시간 데이터는 다른 시스템에서 성공적으로 구문 분석 되지 않을 수 있습니다.This means that date and time data saved in a culture-specific format on one system might not parse successfully on another system.

      날짜 및 시간 구문 분석에 대 한 자세한 내용은 날짜 및 시간 문자열 구문 분석 및 예외를 throw 한 메서드에 대 한 설명서를 참조 하세요.For more information about parsing dates and times, see Parsing Date and Time Strings and the documentation for the method that threw the exception.

    • 가.GUIDs. GUID의 문자열 표현은 32 16 진수 (0-F)로 구성 되어야 하 고, 메서드를 통해 출력 되는 5 가지 형식 중 하나 여야 합니다 Guid.ToString .The string representation of a GUID must consist of 32 hexadecimal digits (0-F), and must be in one of the five formats output by the Guid.ToString method. 자세한 내용은 Guid.Parse 메서드를 참조하세요.For more information, see the Guid.Parse method.

    • 부호 있는 모든 정수, 부호 없는 정수 및 부동 소수점 형식을 포함 하는 숫자 형식입니다.Numeric types, including all signed integers, unsigned integers, and floating-point types. 구문 분석할 문자열은 라틴어 숫자 0-9으로 구성 되어야 합니다.The string to be parsed must consist of the Latin digits 0-9. 양수 또는 음수 부호, 소수 구분 기호, 그룹 구분 기호 및 통화 기호도 사용할 수 있습니다.A positive or negative sign, decimal separator, group separators, and currency symbol may also be permitted. 다른 문자를 포함 하는 문자열을 구문 분석 하려고 하면 항상 FormatException 예외가 throw 됩니다.Trying to parse a string that contains any other character always throws a FormatException exception.

      모든 숫자 문자열을 특정 문화권의 서식 규칙에 따라 해석 됩니다: 현재 스레드 문화권 (또는 경우에 따라 현재 애플리케이션 도메인 문화권), 고정 문화권 또는 지정된 된 문화권입니다.All numeric strings are interpreted based on the formatting conventions of a particular culture: either the current thread culture (or, in some cases, the current application domain culture), the invariant culture, or a specified culture. 따라서 한 문화권의 규칙을 사용 하 여 구문 분석 된 숫자 문자열은 다른 문화권의 규칙을 사용할 때 실패할 수 있습니다.As a result, a numeric string that is parsed by using the conventions of one culture might fail when using the conventions of another.

      숫자 문자열을 구문 분석 하는 방법에 대 한 자세한 내용은 숫자 문자열 구문 분석 및 예외를 throw 한 특정 메서드에 대 한 설명서를 참조 하세요.For more information about parsing numeric strings, see Parsing Numeric Strings and the documentation for the specific method that threw the exception.

    • 시간 간격.Time intervals. 구문 분석 될 문자열은 고정된 문화권을 구분 하지 않는 형식 또는 현재 스레드 문화권에 의해 (또는 경우에 따라 현재 애플리케이션 도메인 문화권)에 정의 된 문화권 구분 형식에서 이어야 합니다. 고정 문화권 또는 지정된 된 문화권입니다.The string to be parsed must be either in fixed culture-insensitive format or in a culture-sensitive format defined by the current thread culture (or, in some cases, the current application domain culture), the invariant culture, or a specified culture. 문자열이 적절 한 형식이 아니거나, 최소한 시간 간격의 일, 시간 및 분 구성 요소가 없는 경우 구문 분석 메서드는 예외를 throw FormatException 합니다.If the string isn't in an appropriate format, or if, at the minimum, the days, hours, and minutes components of the time interval aren't present, the parsing method throws a FormatException exception. 자세한 내용은 TimeSpan 예외를 throw 한 구문 분석 메서드에 대 한 설명서를 참조 하세요.For more information, see the documentation for the TimeSpan parsing method that threw the exception.

  • 형식은 IFormattable 개체를 문자열 표현으로 변환 하는 방법을 정의 하는 형식 문자열을 지원 하 고 잘못 된 형식 문자열이 사용 되는 인터페이스를 구현 합니다.A type implements the IFormattable interface, which supports format strings that define how an object is converted to its string representation, and an invalid format string is used. 서식 지정 작업에서 가장 일반적입니다.This is most common in a formatting operation. 다음 예제에서 "Q" 표준 서식 문자열은 숫자의 서식을 지정 하기 위해 복합 서식 문자열에 사용 됩니다.In the following example, the "Q" standard format string is used in a composite format string to format a number. 그러나 "Q"는 올바른 표준 형식 문자열이아닙니다.However, "Q" is not a valid standard format string.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          decimal price = 169.32m;
          Console.WriteLine("The cost is {0:Q2}.", price);
       }
    }
    // The example displays the following output:
    //    Unhandled Exception: System.FormatException: Format specifier was invalid.
    //       at System.Number.FormatDecimal(Decimal value, String format, NumberFormatInfo info)
    //       at System.Decimal.ToString(String format, IFormatProvider provider)
    //       at System.Text.StringBuilder.AppendFormat(IFormatProvider provider, String format, Object[] args)
    //       at System.IO.TextWriter.WriteLine(String format, Object arg0)
    //       at System.IO.TextWriter.SyncTextWriter.WriteLine(String format, Object arg0)
    //       at Example.Main()
    
    Module Example
       Public Sub Main()
          Dim price As Decimal = 169.32d
          Console.WriteLine("The cost is {0:Q2}.", price)
       End Sub
    End Module
    ' The example displays the following output:
    '    Unhandled Exception: System.FormatException: Format specifier was invalid.
    '       at System.Number.FormatDecimal(Decimal value, String format, NumberFormatInfo info)
    '       at System.Decimal.ToString(String format, IFormatProvider provider)
    '       at System.Text.StringBuilder.AppendFormat(IFormatProvider provider, String format, Object[] args)
    '       at System.IO.TextWriter.WriteLine(String format, Object arg0)
    '       at System.IO.TextWriter.SyncTextWriter.WriteLine(String format, Object arg0)
    '       at Example.Main()
    

    이 예외는 코딩 오류로 인해 발생 합니다.This exception results from a coding error. 오류를 수정 하려면 형식 문자열을 제거 하거나 올바른 형식으로 대체 합니다.To correct the error, either remove the format string or substitute a valid one. 다음 예에서는 잘못 된 서식 문자열을 "C" (통화) 서식 문자열로 바꿔 오류를 수정 합니다.The following example corrects the error by replacing the invalid format string with the "C" (currency) format string.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          decimal price = 169.32m;
          Console.WriteLine("The cost is {0:C2}.", price);
       }
    }
    // The example displays the following output:
    //    The cost is $169.32.
    
    Module Example
       Public Sub Main()
          Dim price As Decimal = 169.32d
          Console.WriteLine("The cost is {0:C2}.", price)
       End Sub
    End Module
    ' The example displays the following output:
    '   The cost is $169.32.
    

    FormatException및와 같은 구문 분석 메서드에서는 예외를 throw 할 수도 DateTime.ParseExact 있습니다 Guid.ParseExact .이는 문자열을 구문 분석 하 여 서식 문자열에 지정 된 패턴을 정확 하 게 준수 해야 합니다.A FormatException exception can also be thrown by parsing methods, such as DateTime.ParseExact and Guid.ParseExact, that require the string to be parsed to conform exactly to the pattern specified by a format string. 다음 예제에서 GUID의 문자열 표현은 "G" 표준 형식 문자열에 지정 된 패턴을 준수 해야 합니다.In the following example, the string representation of a GUID is expected to conform to the pattern specified by the "G" standard format string. 그러나 Guid 의 구조체 구현은 IFormattable "G" 형식 문자열을 지원 하지 않습니다.However, the Guid structure's implementation of IFormattable does not support the "G" format string.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          string guidString = "ba748d5c-ae5f-4cca-84e5-1ac5291c38cb";
          Console.WriteLine(Guid.ParseExact(guidString, "G"));
       }
    }
    // The example displays the following output:
    //    Unhandled Exception: System.FormatException:
    //       Format String can be only "D", "d", "N", "n", "P", "p", "B", "b", "X" or "x".
    //       at System.Guid.ParseExact(String input, String format)
    //       at Example.Main()
    
    Module Example
       Public Sub Main()
          Dim guidString As String = "ba748d5c-ae5f-4cca-84e5-1ac5291c38cb"
          Console.WriteLine(Guid.ParseExact(guidString, "G"))
       End Sub
    End Module
    ' The example displays the following output:
    '    Unhandled Exception: System.FormatException: 
    '       Format String can be only "D", "d", "N", "n", "P", "p", "B", "b", "X" or "x".
    '       at System.Guid.ParseExact(String input, String format)
    '       at Example.Main()
    

    이 예외는 코딩 오류가 발생 한 경우에도 발생 합니다.This exception also results from a coding error. 이를 해결 하려면 또는와 같이 정확한 형식이 필요 하지 않은 구문 분석 메서드를 호출 DateTime.Parse Guid.Parse 하거나 유효한 형식 문자열을 대체 합니다.To correct it, call a parsing method that doesn't require a precise format, such as DateTime.Parse or Guid.Parse, or substitute a valid format string. 다음 예제에서는 메서드를 호출 하 여 오류를 수정 합니다 Guid.Parse .The following example corrects the error by calling the Guid.Parse method.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          string guidString = "ba748d5c-ae5f-4cca-84e5-1ac5291c38cb";
          Console.WriteLine(Guid.Parse(guidString));
       }
    }
    // The example displays the following output:
    //    ba748d5c-ae5f-4cca-84e5-1ac5291c38cb
    
    Module Example
       Public Sub Main()
          Dim guidString As String = "ba748d5c-ae5f-4cca-84e5-1ac5291c38cb"
          Console.WriteLine(Guid.Parse(guidString))
       End Sub
    End Module
    ' The example displays the following output:
    '   ba748d5c-ae5f-4cca-84e5-1ac5291c38cb
    
  • 복합 형식 문자열 의 형식 항목에 대 한 하나 이상의 인덱스가 개체 목록 또는 매개 변수 배열에 있는 항목의 인덱스 보다 큽니다.One or more of the indexes of the format items in a composite format string is greater than the indexes of the items in the object list or parameter array. 다음 예제에서는 서식 문자열에서 서식 항목의 가장 큰 인덱스는 3입니다.In the following example, the largest index of a format item in the format string is 3. 개체 목록에 있는 항목의 인덱스는 0부터 시작 하므로이 형식 문자열은 개체 목록에 4 개의 항목이 있어야 합니다.Because the indexes of items in the object list are zero-based, this format string would require the object list to have four items. 대신,, 및만 있으므로 dat temp scale 코드에서 FormatException 런타임에 예외가 발생 합니다.Instead, it has only three, dat, temp, and scale, so the code results in a FormatException exception at run time:.

    using System;
    
    public class Example
    {
       public enum TemperatureScale
       { Celsius, Fahrenheit, Kelvin }
    
       public static void Main()
       {
          String info = GetCurrentTemperature();
          Console.WriteLine(info);
       }
    
       private static String GetCurrentTemperature()
       {
          DateTime dat = DateTime.Now;
          Decimal temp = 20.6m;
          TemperatureScale scale = TemperatureScale.Celsius;
          String result;
    
          result = String.Format("At {0:t} on {1:D}, the temperature is {2:F1} {3:G}",
                                 dat, temp, scale);
          return result;
       }
    }
    // The example displays output like the following:
    //    Unhandled Exception: System.FormatException: Format specifier was invalid.
    //       at System.Number.FormatDecimal(Decimal value, String format, NumberFormatInfo info)
    //       at System.Decimal.ToString(String format, IFormatProvider provider)
    //       at System.Text.StringBuilder.AppendFormat(IFormatProvider provider, String format, Object[] args)
    //       at System.String.Format(IFormatProvider provider, String format, Object[] args)
    //       at Example.Main()
    
    Module Example
       Public Enum TemperatureScale As Integer
          Celsius
          Fahrenheit
          Kelvin
       End Enum
    
       Public Sub Main()
          Dim info As String = GetCurrentTemperature()
          Console.WriteLine(info)
       End Sub
    
       Private Function GetCurrentTemperature() As String
          Dim dat As Date = Date.Now
          Dim temp As Decimal = 20.6d
          Dim scale As TemperatureScale = TemperatureScale.Celsius
          Dim result As String 
          
          result = String.Format("At {0:t} on {1:D}, the temperature is {2:F1} {3:G}",
                                 dat, temp, scale)    
          Return result
       End Function
    End Module
    ' The example displays output like the following:
    '    Unhandled Exception: System.FormatException: Format specifier was invalid.
    '       at System.Number.FormatDecimal(Decimal value, String format, NumberFormatInfo info)
    '       at System.Decimal.ToString(String format, IFormatProvider provider)
    '       at System.Text.StringBuilder.AppendFormat(IFormatProvider provider, String format, Object[] args)
    '       at System.String.Format(IFormatProvider provider, String format, Object[] args)
    '       at Example.Main()
    

    이 경우 FormatException 예외는 개발자 오류의 결과입니다.In this case, the FormatException exception is a result of developer error. try/catch개체 목록의 각 항목이 서식 항목의 인덱스에 해당 하는지 확인 하 여 블록에서 처리 되는 것이 아니라 수정 해야 합니다.It should be corrected rather than handled in a try/catch block by making sure that each item in the object list corresponds to the index of a format item. 이 예를 수정 하려면 변수를 참조 하도록 두 번째 형식 항목의 인덱스를 변경 하 dat 고 각 후속 형식 항목의 인덱스를 1 씩 감소 시킵니다.To correct this example, change the index of the second format item to refer to the dat variable, and decrement the index of each subsequent format item by one.

    using System;
    
    public class Example
    {
       public enum TemperatureScale
       { Celsius, Fahrenheit, Kelvin }
    
       public static void Main()
       {
          String info = GetCurrentTemperature();
          Console.WriteLine(info);
       }
    
       private static String GetCurrentTemperature()
       {
          DateTime dat = DateTime.Now;
          Decimal temp = 20.6m;
          TemperatureScale scale = TemperatureScale.Celsius;
          String result;
    
          result = String.Format("At {0:t} on {0:D}, the temperature is {1:F1} {2:G}",
                                 dat, temp, scale);
          return result;
       }
    }
    // The example displays output like the following:
    //    At 10:40 AM on Wednesday, June 04, 2014, the temperature is 20.6 Celsius
    
    Module Example
       Public Enum TemperatureScale As Integer
          Celsius
          Fahrenheit
          Kelvin
       End Enum
    
       Public Sub Main()
          Dim info As String = GetCurrentTemperature()
          Console.WriteLine(info)
       End Sub
    
       Private Function GetCurrentTemperature() As String
          Dim dat As Date = Date.Now
          Dim temp As Decimal = 20.6d
          Dim scale As TemperatureScale = TemperatureScale.Celsius
          Dim result As String 
          
          result = String.Format("At {0:t} on {0:D}, the temperature is {1:F1} {2:G}",
                                 dat, temp, scale)    
          Return result
       End Function
    End Module
    ' The example displays output like the following:
    '       At 10:40 AM on Wednesday, June 04, 2014, the temperature is 20.6 Celsius
    
  • 복합 서식 문자열의 형식이 잘못 되었습니다.The composite format string isn't well-formed. 이 경우 FormatException 예외는 항상 개발자 오류의 결과입니다.When this happens, the FormatException exception is always a result of developer error. 블록에서 처리 되는 것이 아니라 수정 해야 합니다 try/catch .It should be corrected rather than handled in a try/catch block.

    다음 예제와 같이 문자열에 리터럴 중괄호를 포함 하려고 하면에서 예외가 throw 됩니다.Trying to include literal braces in a string, as the following example does, will throw the exception.

    result = String.Format("The text has {0} '{' characters and {1} '}' characters.",
                           nOpen, nClose);
    
    result = String.Format("The text has {0} '{' characters and {1} '}' characters.",
                           nOpen, nClose)
    

    복합 형식 문자열에 리터럴 중괄호를 포함 하는 권장 방법은 개체 목록에 포함 하 고 서식 항목을 사용 하 여 결과 문자열에 삽입 하는 것입니다.The recommended technique for including literal braces in a composite format string is to include them in the object list and use format items to insert them into the result string. 예를 들어 여기에 표시 된 것 처럼 이전 복합 형식 문자열을 수정할 수 있습니다.For example, you can modify the previous composite format string as shown here.

    string result;
    int nOpen = 1;
    int nClose = 2;
    result = String.Format("The text has {0} '{{' characters and {1} '}}' characters.",
                           nOpen, nClose);
    Console.WriteLine(result);
    
    result = String.Format("The text has {0} '{{' characters and {1} '}}' characters.",
                           nOpen, nClose)
    

    서식 문자열에 철자가 포함 된 경우에도 예외가 throw 됩니다.The exception is also thrown if your format string contains a typo. 다음 메서드에 대 한 호출은 String.Format 닫는 중괄호를 생략 하 고 닫는 괄호를 사용 하 여 여는 중괄호를 쌍으로 만듭니다.The following call to the String.Format method omits a closing brace and pairs an opening brace with a closing bracket.

    int n1 = 10;
    int n2 = 20;
    String result = String.Format("{0 + {1] = {2}",
                                  n1, n2, n1 + n2);
    
    Dim n1 As Integer = 10
    Dim n2 As Integer = 20
    Dim result As String = String.Format("{0 + {1] = {2}", 
                                         n1, n2, n1 + n2)
    

    오류를 수정 하려면 모든 여는 중괄호와 닫는 중괄호가 일치 하는지 확인 합니다.To correct the error, ensure that all opening and closing braces correspond.

    String result = String.Format("{0} + {1} = {2}",
                                  n1, n2, n1 + n2);
    
    Dim result As String = String.Format("{0} + {1} = {2}", 
                                         n1, n2, n1 + n2)
    
  • 복합 형식 지정 메서드에 개체 목록을 강력한 형식의 매개 변수 배열로 제공 했는데, FormatException 이 예외는 하나 이상의 형식 항목의 인덱스가 개체 목록의 인수 개수를 초과 했음을 나타냅니다.You've supplied the object list in a composite formatting method as a strongly typed parameter array, and the FormatException exception indicates that the index of one or more format items exceeds the number of arguments in the object list. 이는 배열 형식 간의 명시적 변환이 없기 때문에 발생 합니다. 대신 컴파일러는 배열을 매개 변수 배열이 아니라 단일 인수로 처리 합니다.This occurs because no explicit conversion between array types exists, so instead the compiler treats the array as a single argument rather than as a parameter array. 예를 들어, 다음 Console.WriteLine(String, Object[]) 메서드 호출은 예외를 throw 하지만 FormatException , 형식 항목의 가장 높은 인덱스는 3이 고 형식의 매개 변수 배열에는 Int32 네 개의 요소가 있습니다.For example, the following call to the Console.WriteLine(String, Object[]) method throws a FormatException exception, although the highest index of the format items is 3, and the parameter array of type Int32 has four elements.

    using System;
    using System.Collections.Generic;
    
    public class Example
    {
       public static void Main()
       {
          Random rnd = new Random();
          int[]  numbers = new int[4];
          int total = 0;
          for (int ctr = 0; ctr <= 2; ctr++) {
             int number = rnd.Next(1001);
             numbers[ctr] = number;
             total += number;
          }
          numbers[3] = total;
          Console.WriteLine("{0} + {1} + {2} = {3}", numbers);
       }
    }
    // The example displays the following output:
    //    Unhandled Exception:
    //    System.FormatException:
    //       Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
    //       at System.Text.StringBuilder.AppendFormat(IFormatProvider provider, String format, Object[] args)
    //       at System.IO.TextWriter.WriteLine(String format, Object arg0)
    //       at System.IO.TextWriter.SyncTextWriter.WriteLine(String format, Object arg0)
    //       at Example.Main()
    
    Imports System.Collections.Generic
    
    Module Example
       Public Sub Main()
          Dim rnd As New Random()
          Dim numbers(3) As Integer
          Dim total As Integer = 0
          For ctr = 0 To 2
             Dim number As Integer = rnd.Next(1001)
             numbers(ctr) = number
             total += number
          Next
          numbers(3) = total
          Console.WriteLine("{0} + {1} + {2} = {3}", numbers)   
       End Sub
    End Module
    ' The example displays the following output:
    '    Unhandled Exception: 
    '    System.FormatException: 
    '       Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
    '       at System.Text.StringBuilder.AppendFormat(IFormatProvider provider, String format, Object[] args)
    '       at System.IO.TextWriter.WriteLine(String format, Object arg0)
    '       at System.IO.TextWriter.SyncTextWriter.WriteLine(String format, Object arg0)
    '       at Example.Main()
    

    이 예외를 처리 하는 대신 원인을 제거 해야 합니다.Instead of handling this exception, you should eliminate its cause. Visual Basic와 c # 모두 정수 배열을 개체 배열로 변환할 수 없으므로 복합 형식 지정 메서드를 호출 하기 전에 변환을 직접 수행 해야 합니다.Because neither Visual Basic nor C# can convert an integer array to an object array, you have to perform the conversion yourself before calling the composite formatting method. 다음 예제에서는 한 가지 구현을 제공합니다.The following example provides one implementation.

    using System;
    using System.Collections.Generic;
    
    public class Example
    {
       public static void Main()
       {
          Random rnd = new Random();
          int[]  numbers = new int[4];
          int total = 0;
          for (int ctr = 0; ctr <= 2; ctr++) {
             int number = rnd.Next(1001);
             numbers[ctr] = number;
             total += number;
          }
          numbers[3] = total;
          object[] values = new object[numbers.Length];
          numbers.CopyTo(values, 0);
          Console.WriteLine("{0} + {1} + {2} = {3}", values);
       }
    }
    // The example displays output like the following:
    //        477 + 956 + 901 = 2334
    
    Imports System.Collections.Generic
    
    Module Example
       Public Sub Main()
          Dim rnd As New Random()
          Dim numbers(3) As Integer
          Dim total As Integer = 0
          For ctr = 0 To 2
             Dim number As Integer = rnd.Next(1001)
             numbers(ctr) = number
             total += number
          Next
          numbers(3) = total
          Dim values(numbers.Length - 1) As Object
          numbers.CopyTo(values, 0) 
          Console.WriteLine("{0} + {1} + {2} = {3}", values)   
       End Sub
    End Module
    ' The example displays output like the following:
    '       477 + 956 + 901 = 2334
    

FormatException는 0x80131537 값을 갖는 HRESULT COR_E_FORMAT를 사용 합니다.FormatException uses the HRESULT COR_E_FORMAT, which has the value 0x80131537.

FormatException클래스는에서 파생 되 Exception 고 고유 멤버를 추가 하지 않습니다.The FormatException class derives from Exception and adds no unique members. 인스턴스의 초기 속성 값의 목록을 FormatException, 참조는 FormatException 생성자입니다.For a list of initial property values for an instance of FormatException, see the FormatException constructors.

생성자

FormatException()

FormatException 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the FormatException class.

FormatException(SerializationInfo, StreamingContext)

serialize된 데이터를 사용하여 FormatException 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the FormatException class with serialized data.

FormatException(String)

지정된 오류 메시지를 사용하여 FormatException 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the FormatException class with a specified error message.

FormatException(String, Exception)

지정된 오류 메시지와 해당 예외의 원인인 내부 예외에 대한 참조를 사용하여 FormatException 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the FormatException class with a specified error message and a reference to the inner exception that is the cause of this exception.

속성

Data

예외에 대한 사용자 정의 정보를 추가로 제공하는 키/값 쌍 컬렉션을 가져옵니다.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(다음에서 상속됨 Exception)
HelpLink

이 예외와 연결된 도움말 파일에 대한 링크를 가져오거나 설정합니다.Gets or sets a link to the help file associated with this exception.

(다음에서 상속됨 Exception)
HResult

특정 예외에 할당된 코드화된 숫자 값인 HRESULT를 가져오거나 설정합니다.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(다음에서 상속됨 Exception)
InnerException

현재 예외를 발생시킨 Exception 인스턴스를 가져옵니다.Gets the Exception instance that caused the current exception.

(다음에서 상속됨 Exception)
Message

현재 예외를 설명하는 메시지를 가져옵니다.Gets a message that describes the current exception.

(다음에서 상속됨 Exception)
Source

오류를 발생시키는 애플리케이션 또는 개체의 이름을 가져오거나 설정합니다.Gets or sets the name of the application or the object that causes the error.

(다음에서 상속됨 Exception)
StackTrace

호출 스택의 직접 실행 프레임 문자열 표현을 가져옵니다.Gets a string representation of the immediate frames on the call stack.

(다음에서 상속됨 Exception)
TargetSite

현재 예외를 throw하는 메서드를 가져옵니다.Gets the method that throws the current exception.

(다음에서 상속됨 Exception)

메서드

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.Determines whether the specified object is equal to the current object.

(다음에서 상속됨 Object)
GetBaseException()

파생 클래스에서 재정의된 경우 하나 이상의 후속 예외의 근본 원인이 되는 Exception 을 반환합니다.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(다음에서 상속됨 Exception)
GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(다음에서 상속됨 Object)
GetObjectData(SerializationInfo, StreamingContext)

파생 클래스에서 재정의된 경우 예외에 관한 정보를 SerializationInfo 에 설정합니다.When overridden in a derived class, sets the SerializationInfo with information about the exception.

(다음에서 상속됨 Exception)
GetType()

현재 인스턴스의 런타임 형식을 가져옵니다.Gets the runtime type of the current instance.

(다음에서 상속됨 Exception)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
ToString()

현재 예외에 대한 문자열 표현을 만들고 반환합니다.Creates and returns a string representation of the current exception.

(다음에서 상속됨 Exception)

이벤트

SerializeObjectState

예외에 대한 serialize된 데이터가 들어 있는 예외 상태 개체가 만들어지도록 예외가 serialize될 때 발생합니다.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(다음에서 상속됨 Exception)

적용 대상

추가 정보