无效UUID的自定义异常处理程序

时间:2014-02-21 21:04:21

标签: c# uuid

这是我依靠Win32_ComputerSystemProduct结构检索主板UUID的方法。

    #region "UUID"
    public static string getUUID()
    {
        string UUID = string.Empty;
        try
        {
            ManagementClass mc = new ManagementClass("Win32_ComputerSystemProduct");
            ManagementObjectCollection moc = mc.GetInstances();

            foreach (ManagementObject mo in moc)
            {
                UUID = mo.Properties["UUID"].Value.ToString();
                break;
            }

            UUID = "";

            if (UUID.Equals(string.Empty)
                || UUID.Equals("")
                || UUID.Equals(null)
                || UUID.Equals("FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF")
                || UUID.Equals("00000000-0000-0000-0000-000000000000"))
            {
                throw new System.Exception("UUID is invalid.");
            }
            return UUID;
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error Message: " + ex.Message);
        }
        return UUID;
    }
    #endregion

我有一个内置的异常处理程序,如果字符串是我列出的字符串,则抛出错误,因为C#隐含地不知道像FFF...FFF这样的字符串是无效/错误。

我重新定义了UUID = "";以测试此方法,例如,如果运行此脚本的用户具有空白UUID。

我在想 - 这是正确的方法吗?我不确定return UUID仍然会返回UUID,即使它是空白的,或FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF

1 个答案:

答案 0 :(得分:0)

对于初学者,在if语句之前,将UUID设置为null。

接下来,你的if应该是这样的:

        if (String.IsNullorEmpty(UUID)
            || UUID.Equals("FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF")
            || UUID.Equals("00000000-0000-0000-0000-000000000000"))
        {
            throw new System.Exception("UUID is invalid.");
        }
        return UUID;

除此之外,整个if语句应该在foreach