1

我的代码如下所示:

var twoLetterCountryCode = *Get possibly invalid value from database*;
if (!string.IsNullOrEmpty(twoLetterCountryCode) && twoLetterCountryCode.Length == 2)
{
    try
    {
        var region = new RegionInfo(twoLetterCountryCode);
    }
    catch (ArgumentException ex)
    {
        *log exception*
    }
}

是否有验证区域名称的内置方法,因此我不必使用 try/catch?

4

1 回答 1

0

不,没有RegionInfo.TryParse,我不知道他们为什么不提供。他们有信息,但一切都是internal,所以你无法访问它。

所以在我看来这try-catch很好。你可以把它放在一个扩展方法中。

public static class StringExtensions
{
    public static bool TryParseRegionInfo(this string input, out RegionInfo regionInfo)
    {
        regionInfo = null;
        if(string.IsNullOrEmpty(input))
            return false;
        try
        {
            regionInfo = new RegionInfo(input);
            return true;
        }
        catch (ArgumentException)
        {
            return false;
        }
    }
}
于 2021-05-18T07:57:43.523 回答