private void CheckNumeric()
{
const FormatFlags BadCombo1 = FormatFlags.Plus | FormatFlags.LeadingSpace;
const FormatFlags BadCombo2 = FormatFlags.LeftJustify | FormatFlags.ZeroPad;
if ( _width < -1 )
throw new IllegalFormatWidthException(_width);
if ( _precision < -1 )
throw new IllegalFormatPrecisionException(_precision);
// '-' and '0' require a width
if ( _width == -1 &&
( (_flags & (FormatFlags.LeftJustify | FormatFlags.ZeroPad )) != 0 ))
throw new MissingFormatWidthException(ToString());
// bad combination
if ( (_flags & BadCombo1) ==BadCombo1 || (_flags & BadCombo2 ) == BadCombo2 )
throw new IllegalFormatFlagsException(FormatFlagsToString(_flags));
}