FormatException Sınıf

Tanım

Bir bağımsız değişkenin biçimi geçersiz olduğunda veya bir bileşik biçim dizesi düzgün biçimlendirilmediği zaman oluşturulan özel durum.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.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class FormatException : SystemException
type FormatException = class
    inherit Exception
type FormatException = class
    inherit SystemException
Public Class FormatException
Inherits Exception
Public Class FormatException
Inherits SystemException
Devralma
FormatException
Devralma
FormatException
Türetilmiş
Öznitelikler

Açıklamalar

Aşağıdaki nedenlerden biri için FormatException özel durumu oluşturulabilir:A FormatException exception can be thrown for one of the following reasons:

  • Bir dizeyi başka bir veri türüne dönüştüren bir yönteme yapılan çağrıda, dize gerekli düzene uymuyor.In a call to a method that converts a string to some other data type, the string doesn't conform to the required pattern. Bu genellikle Convert sınıfının bazı yöntemleri ve bazı türlerin Parse ve ParseExact yöntemleri çağrılırken oluşur.This typically occurs when calling some methods of the Convert class and the Parse and ParseExact methods of some types.

    Çoğu durumda, özellikle dönüştürdüğünüz dize bir kullanıcı tarafından giriş veya bir dosyadan okuma ise, bir try/catch bloğu kullanmanız ve dönüştürme başarısız olursa FormatException özel durumu işlemeniz gerekir.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. Aynı zamanda, varsa, dönüştürme yöntemine yapılan çağrıyı bir TryParse veya TryParseExact yöntemi çağrısıyla değiştirebilirsiniz.You can also replace the call to the conversion method with a call to a TryParse or TryParseExact method, if one exists. Ancak, önceden tanımlanmış veya sabit kodlanmış bir dizeyi ayrıştırmaya çalışırken oluşturulan FormatException bir özel durum, bir program hatası olduğunu gösterir.However, a FormatException exception that is thrown when you're trying to parse a predefined or hard-coded string indicates a program error. Bu durumda, özel durumu işlemek yerine hatayı düzeltmeniz gerekir.In this case, you should correct the error rather than handle the exception.

    Bir dizenin System ad alanındaki aşağıdaki türlere dönüştürülmesi bir FormatException özel durumu oluşturabilir:The conversion of a string to the following types in the System namespace can throw a FormatException exception:

    • Boolean.Boolean. Boolean.Parse(String) ve Convert.ToBoolean(String) yöntemleri, dizenin "true", "true", "false" veya "false" olarak dönüştürülmesini gerektirir.The Boolean.Parse(String) and Convert.ToBoolean(String) methods require the string to be converted to be "True", "true", "False", or "false". Diğer herhangi bir değer FormatException özel durumu oluşturur.Any other value throws a FormatException exception.

    • DateTime ve DateTimeOffset.DateTime and DateTimeOffset. Tüm tarih ve saat verileri, belirli bir kültürün biçimlendirme kurallarına göre yorumlanır: geçerli iş parçacığı kültürü (veya bazı durumlarda, geçerli uygulama etki alanı kültürü), sabit kültür veya belirtilen kültür.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) ve DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles) yöntemlerini çağırdığınızda, tarih ve saat verileri bir veya daha fazla standart biçim dizesi veya yöntem çağrısında bağımsız değişken olarak sunulan özel biçim dizeleri tarafından belirtilen bir modele tam olarak uymalıdır.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. Bir kültüre özgü beklenen bir düzene uygun değilse, bir FormatException özel durumu oluşturulur.If it doesn't conform to an expected culture-specific pattern, a FormatException exception is thrown. Bu, bir sistemdeki kültüre özgü bir biçimde kaydedilen tarih ve saat verilerinin başka bir sistemde başarıyla ayrıştırgörüntülenmeyeceği anlamına gelir.This means that date and time data saved in a culture-specific format on one system might not parse successfully on another system.

      Tarih ve saatleri ayrıştırma hakkında daha fazla bilgi için bkz. ayrıştırma tarih ve saat dizeleri ve özel durumu oluşturan metodun belgeleri.For more information about parsing dates and times, see Parsing Date and Time Strings and the documentation for the method that threw the exception.

    • Yapılamıyor.GUIDs. Bir GUID 'nin dize temsili 32 onaltılık basamak (0-F) içermelidir ve Guid.ToString yöntemi tarafından beş biçimden birinde olmalıdır.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. Daha fazla bilgi için bkz. Guid.Parse yöntemi.For more information, see the Guid.Parse method.

    • Tüm işaretli tamsayılar, işaretsiz tamsayılar ve kayan nokta türleri dahil olmak üzere sayısal türler.Numeric types, including all signed integers, unsigned integers, and floating-point types. Ayrıştırılacak dize, 0-9 Latin arası rakamlardan oluşmalıdır.The string to be parsed must consist of the Latin digits 0-9. Pozitif veya negatif bir işaretine, ondalık ayırıcıya, Grup ayırıcılarına ve para birimi simgesine de izin verilmeyebilir.A positive or negative sign, decimal separator, group separators, and currency symbol may also be permitted. Başka herhangi bir karakteri içeren bir dizeyi ayrıştırmaya çalışmak her zaman FormatException bir özel durum oluşturur.Trying to parse a string that contains any other character always throws a FormatException exception.

      Tüm sayısal dizeler, belirli bir kültürün biçimlendirme kurallarına göre yorumlanır: geçerli iş parçacığı kültürü (veya bazı durumlarda, geçerli uygulama etki alanı kültürü), sabit kültür veya belirtilen kültür.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. Sonuç olarak, bir kültürün kuralları kullanılarak ayrıştırılmış bir sayısal dize, başka bir kural kullanılırken başarısız olabilir.As a result, a numeric string that is parsed by using the conventions of one culture might fail when using the conventions of another.

      Sayısal dizeleri ayrıştırma hakkında daha fazla bilgi için bkz. sayısal dizeleri ayrıştırma ve özel durumu oluşturan özel metodun belgeleri.For more information about parsing numeric strings, see Parsing Numeric Strings and the documentation for the specific method that threw the exception.

    • Zaman aralıkları.Time intervals. Ayrıştırılacak dize, sabit kültür duyarsız biçiminde veya geçerli iş parçacığı kültürü (veya bazı durumlarda, geçerli uygulama etki alanı kültürü), sabit kültür veya belirtilen kültür tarafından tanımlanan kültüre duyarlı bir biçimde olmalıdır.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. Dize uygun bir biçimde değilse veya en az, zaman aralığının gün, saat ve dakika bileşenleri yoksa, ayrıştırma yöntemi bir FormatException özel durumu oluşturur.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. Daha fazla bilgi için, özel durumu oluşturan TimeSpan ayrıştırma yöntemine yönelik belgelere bakın.For more information, see the documentation for the TimeSpan parsing method that threw the exception.

  • Bir tür, bir nesnenin dize gösterimine nasıl dönüştürüleceğini tanımlayan biçim dizelerini destekleyen IFormattable arabirimini uygular ve geçersiz bir biçim dizesi kullanılır.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. Bu, Biçimlendirme işleminde yaygın olarak kullanılan bir işlemdir.This is most common in a formatting operation. Aşağıdaki örnekte, bir sayıyı biçimlendirmek için bir bileşik biçim dizesinde "Q" standart biçim dizesi kullanılır.In the following example, the "Q" standard format string is used in a composite format string to format a number. Ancak, "Q" geçerli bir standart biçim dizesideğildir.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()
    

    Bu özel durum, bir kodlama hatasından kaynaklanır.This exception results from a coding error. Hatayı düzeltmek için, biçim dizesini kaldırın ya da geçerli bir tane değiştirin.To correct the error, either remove the format string or substitute a valid one. Aşağıdaki örnek, geçersiz biçim dizesini "C" (para birimi) biçim dizesiyle değiştirerek hatayı düzeltir.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 bir özel durum, DateTime.ParseExact ve Guid.ParseExactgibi yöntemleri ayrıştırarak, dizenin bir biçim dizesi tarafından belirtilen düzene tam uyacak şekilde ayrıştırılmasını gerektiren bir durum da oluşturulabilir.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. Aşağıdaki örnekte, bir GUID 'nin dize gösteriminin "G" standart biçim dizesi tarafından belirtilen düzene uyması beklenir.In the following example, the string representation of a GUID is expected to conform to the pattern specified by the "G" standard format string. Ancak, Guid yapısının IFormattable uygulanması "G" biçim dizesini desteklemez.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()
    

    Bu özel durum ayrıca bir kodlama hatasından kaynaklanır.This exception also results from a coding error. Bunu düzeltmek için, DateTime.Parse veya Guid.Parsegibi kesin bir biçim gerektirmeyen bir ayrıştırma yöntemi çağırın veya geçerli bir biçim dizesi yerine koyun.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. Aşağıdaki örnek, Guid.Parse yöntemini çağırarak hatayı düzeltir.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
    
  • Bileşik biçim dizesindeki Biçim öğelerinin bir veya daha fazla dizini, nesne listesi veya parametre dizisindeki öğelerin dizinlerinden daha büyük.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. Aşağıdaki örnekte, biçim dizesindeki biçim öğesinin en büyük dizini 3 ' ün altında.In the following example, the largest index of a format item in the format string is 3. Nesne listesindeki öğelerin dizinleri sıfır tabanlı olduğundan, bu biçim dizesinde nesne listesinin dört öğesi olması gerekir.Because the indexes of items in the object list are zero-based, this format string would require the object list to have four items. Bunun yerine, yalnızca üç, dat, tempve scalesahiptir, bu nedenle kod çalışma zamanında FormatException özel durumuyla sonuçlanır:.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()
    

    Bu durumda, FormatException özel durumu geliştirici hatasının bir sonucudur.In this case, the FormatException exception is a result of developer error. Nesne listesindeki her öğenin bir biçim öğesinin dizinine karşılık geldiğinden emin olarak, bir try/catch bloğunda işlenmek yerine düzeltilmelidir.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. Bu örneği düzeltmek için, ikinci biçim öğesinin dizinini dat değişkenine başvuracak şekilde değiştirin ve sonraki her biçim öğesinin dizinini tek bir azaltır.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
    
  • Bileşik biçim dizesi düzgün biçimlendirilmemiş.The composite format string isn't well-formed. Bu durumda, FormatException özel durumu her zaman geliştirici hatasının bir sonucudur.When this happens, the FormatException exception is always a result of developer error. try/catch bloğunda işlenmek yerine düzeltilmelidir.It should be corrected rather than handled in a try/catch block.

    Aşağıdaki örnekte olduğu gibi değişmez değer ayraçları bir dizeye dahil edilmeye çalışılıyor, özel durumu oluşturur.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)
    

    Bileşik biçim dizesinde değişmez değer ayraçları dahil etmek için önerilen teknik, bunları nesne listesine dahil etmek ve bunları sonuç dizesine eklemek için biçim öğelerini kullanmaktır.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. Örneğin, önceki bileşik biçim dizesini burada gösterildiği gibi değiştirebilirsiniz.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)
    

    Biçim dizeniz bir typo içeriyorsa, özel durum da oluşturulur.The exception is also thrown if your format string contains a typo. String.Format yöntemine yapılan aşağıdaki çağrı bir kapatma küme ayracı atlar ve bir kapanış ayracı ile birlikte açma ayracı çiftleri.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)
    

    Hatayı düzeltmek için, tüm açılış ve kapatma küme ayraçlarının karşılık geldiğinden emin olun.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)
    
  • Bir bileşik biçimlendirme yönteminde nesne listesini kesin olarak belirlenmiş bir parametre dizisi olarak sağladınız ve FormatException özel durumu, bir veya daha fazla biçim öğesi dizininin nesne listesindeki bağımsız değişken sayısını aştığını belirtiyor.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. Bu durum, dizi türleri arasında açık bir dönüştürme olmadığı için oluşur; bu nedenle, derleyici diziyi parametre dizisi yerine tek bir bağımsız değişken olarak değerlendirir.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. Örneğin, Console.WriteLine(String, Object[]) yöntemine yapılan aşağıdaki çağrı bir FormatException özel durumu oluşturur, ancak biçim öğelerinin en yüksek dizini 3 ' tür ve Int32 türünde parametre dizisinin dört öğesi vardır.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()
    

    Bu özel durumu işlemek yerine, nedenini ortadan kaldırmanız gerekir.Instead of handling this exception, you should eliminate its cause. Ne Visual Basic ne de C# bir tamsayı dizisini bir nesne dizisine dönüştürebildiğinden, bileşik biçimlendirme yöntemini çağırmadan önce dönüştürmeyi kendiniz gerçekleştirmeniz gerekir.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. Aşağıdaki örnek bir uygulama sağlar.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 değerine sahip olan HRESULT COR_E_FORMAT kullanır.FormatException uses the HRESULT COR_E_FORMAT, which has the value 0x80131537.

FormatException sınıfı Exception türetilir ve benzersiz üye ekler.The FormatException class derives from Exception and adds no unique members. Bir FormatExceptionörneğine ilişkin ilk özellik değerlerinin listesi için, FormatException oluşturuculara bakın.For a list of initial property values for an instance of FormatException, see the FormatException constructors.

Oluşturucular

FormatException()

FormatException sınıfının yeni bir örneğini başlatır.Initializes a new instance of the FormatException class.

FormatException(SerializationInfo, StreamingContext)

FormatException sınıfının yeni bir örneğini serileştirilmiş verilerle başlatır.Initializes a new instance of the FormatException class with serialized data.

FormatException(String)

Belirtilen bir hata iletisiyle FormatException sınıfının yeni bir örneğini başlatır.Initializes a new instance of the FormatException class with a specified error message.

FormatException(String, Exception)

Belirtilen bir hata iletisiyle FormatException sınıfının yeni bir örneğini ve bu özel durumun nedeni olan iç özel duruma bir başvuruyu başlatır.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.

Özellikler

Data

Özel durum hakkında ek kullanıcı tanımlı bilgiler sağlayan anahtar/değer çiftleri koleksiyonunu alır.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Devralındığı yer: Exception)
HelpLink

Bu özel durumla ilişkili Yardım dosyasının bağlantısını alır veya ayarlar.Gets or sets a link to the help file associated with this exception.

(Devralındığı yer: Exception)
HResult

Belirli bir özel duruma atanan kodlanmış bir sayısal değer olan HRESULT 'yi alır veya ayarlar.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Devralındığı yer: Exception)
InnerException

Geçerli özel duruma neden olan Exception örneğini alır.Gets the Exception instance that caused the current exception.

(Devralındığı yer: Exception)
Message

Geçerli özel durumu açıklayan bir ileti alır.Gets a message that describes the current exception.

(Devralındığı yer: Exception)
Source

Uygulamanın veya hataya neden olan nesnenin adını alır veya ayarlar.Gets or sets the name of the application or the object that causes the error.

(Devralındığı yer: Exception)
StackTrace

Çağrı yığınında anlık çerçevelerin dize gösterimini alır.Gets a string representation of the immediate frames on the call stack.

(Devralındığı yer: Exception)
TargetSite

Geçerli özel durumu oluşturan yöntemi alır.Gets the method that throws the current exception.

(Devralındığı yer: Exception)

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneyle eşit olup olmadığını belirler.Determines whether the specified object is equal to the current object.

(Devralındığı yer: Object)
GetBaseException()

Türetilmiş bir sınıfta geçersiz kılınırsa, bir veya daha fazla sonraki özel durumun kök nedeni olan Exception döndürür.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(Devralındığı yer: Exception)
GetHashCode()

Varsayılan karma işlevi olarak işlev görür.Serves as the default hash function.

(Devralındığı yer: Object)
GetObjectData(SerializationInfo, StreamingContext)

Türetilmiş bir sınıfta geçersiz kılınırsa, SerializationInfo özel durumla ilgili bilgilerle ayarlar.When overridden in a derived class, sets the SerializationInfo with information about the exception.

(Devralındığı yer: Exception)
GetType()

Geçerli örneğin çalışma zamanı türünü alır.Gets the runtime type of the current instance.

(Devralındığı yer: Exception)
MemberwiseClone()

Geçerli Objectbasit bir kopyasını oluşturur.Creates a shallow copy of the current Object.

(Devralındığı yer: Object)
ToString()

Geçerli özel durumun dize gösterimini oluşturur ve döndürür.Creates and returns a string representation of the current exception.

(Devralındığı yer: Exception)

Ekinlikler

SerializeObjectState

Özel durum hakkında serileştirilmiş veri içeren bir özel durum nesnesi oluşturmak için bir özel durum serileştirildiğinde gerçekleşir.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Devralındığı yer: Exception)

Şunlara uygulanır

Ayrıca bkz.