例外のトラブルシューティング : System.FormatException
引数の書式が、型を解析または書式設定するメソッドのパラメーターの仕様に一致していない場合は、そのメソッドによって FormatException 例外がスローされます。
書式に関する例外の発生
書式設定
書式設定とはクラス、構造体、または列挙値のインスタンスを文字列表現に変換するプロセスのことで、多くの場合、変換した文字列をユーザーに表示したり、その文字列を使用してオブジェクトの状態を保存したりするために行います。
たとえば、Int32.ToString(String) は、標準またはカスタムの書式文字列を表す文字列パラメーターを受け取り、その数値の文字列表現を返します。 このメソッドは、書式文字列が無効であるかサポートされていない場合、FormatException をスローします。
複合書式指定
複合書式指定では、オブジェクトのリストと複合書式文字列を入力として受け取ります。 複合書式指定文字列は、固定テキストに、書式指定項目と呼ばれるインデックス化されたプレースホルダーが混合されて構成されます。このプレースホルダーはリスト内のオブジェクトに対応します。 書式設定操作によって生成される結果の文字列は、元の固定テキストに文字列で表されたリスト内のオブジェクトが混合されて構成されます。
複合書式指定を行うメソッドの例として、String.Format と Console.WriteLine があります。 複合書式指定を使用するメソッドは、書式文字列が無効である場合、または書式項目のインデックスが 0 未満であるか引数の数より大きい場合、FormatException をスローします。
解析
解析は、.NET Framework の基本型を表す文字列を、その基本型に変換するプロセスです。 たとえば解析操作は、文字列を浮動小数点数や日付と時刻の値に変換するために使用します。
たとえば Int32.Parse(String) Parse は、日付と時刻の文字列表現を、IformatProvider パラメーターで指定されたカルチャ固有の書式情報を使用して、同等の DateTime に変換します。 文字列の書式が正しくない場合は、FormatException がスローされます。
FormatExceptions の回避
FormatException クラスの関連記事には、FormatException エラーの一般的な原因と解決策が記載されています。
MSDN ライブラリの「.NET Framework における型の書式設定」および「.NET Framework における文字列の解析」では、型の正しい書式設定および解析に関する情報が提供されます。
複合書式指定
数値型
日付と時間および Timespan 型
その他の型