Metody TryParse pro DateOnly a TimeOnly vyvolají výjimku pro neplatný vstup.

Metody DateOnly a TimeOnlyTryParseTryParseExact nyní vyvolávají ArgumentException, když jsou poskytnuty neplatné DateTimeStyles hodnoty nebo specifikátory formátu. Tím se zarovná jejich chování s jinými TryParse rozhraními API v .NET.

Verze byla představena

.NET 11 Preview 2

Předchozí chování

Dříve předávání neplatných DateTimeStyles hodnot nebo specifikátorů formátu DateOnly.TryParse, DateOnly.TryParseExact, TimeOnly.TryParse nebo TimeOnly.TryParseExact způsobily, že se metody vrátily false bez vyvolání výjimky.

using System;
using System.Globalization;

bool result = DateOnly.TryParseExact(
    "2023-10-15",
    "yyyy-MM-dd",
    CultureInfo.InvariantCulture,
    (DateTimeStyles)999, // Invalid DateTimeStyles value
    out DateOnly date);

Console.WriteLine(result); // Output: False

Nové chování

Počínaje rozhraním .NET 11, při předání neplatných hodnot DateTimeStyles nebo specifikátorů formátu těmto metodám je vyvolána výjimka ArgumentException. Výjimka obsahuje podrobnosti o neplatném argumentu, například název parametru.

using System;
using System.Globalization;

try
{
    bool result = DateOnly.TryParseExact(
        "2023-10-15",
        "yyyy-MM-dd",
        CultureInfo.InvariantCulture,
        (DateTimeStyles)999, // Invalid DateTimeStyles value
        out DateOnly date);
}
catch (ArgumentException ex)
{
    Console.WriteLine(ex.Message);
    // Output: "The value '999' is not valid for DateTimeStyles. (Parameter 'style')"
}

Typ zásadní změny

Tato změna je změna chování.

Důvod změny

Tato změna sjednocuje chování metod parsování DateOnly a TimeOnly s jinými rozhraními API TryParse v .NET, která vyvolávají výjimky pro neplatné argumenty. Předchozí chování bezobslužného vrácení false neplatných argumentů by mohlo maskovat chyby programování a ztěžovat ladění.

Zkontrolujte své použití DateOnly.TryParse, DateOnly.TryParseExact, TimeOnly.TryParse a TimeOnly.TryParseExact a ujistěte se, že jsou předány platné hodnoty a specifikátory formátu DateTimeStyles. Pokud jsou ve vašich cestách kódu možné neplatné argumenty, zabalte volání do bloku try-catch pro zpracování ArgumentException.

using System;
using System.Globalization;

try
{
    bool result = DateOnly.TryParseExact(
        "2023-10-15",
        "yyyy-MM-dd",
        CultureInfo.InvariantCulture,
        (DateTimeStyles)999, // Invalid DateTimeStyles value
        out DateOnly date);
}
catch (ArgumentException ex)
{
    Console.WriteLine($"Error: {ex.Message}");
    // Handle the exception as needed
}

Ovlivněná rozhraní API