尽管有条件,但不抛出异常的方法

时间:2014-02-21 21:26:17

标签: c# exception network-programming

这是我用来从用户检索MAC地址的方法。

要重现无法检索MAC地址的情况,我故意禁用了我的网卡。这不应该使用以下方法返回MAC地址:

public static string returnMAC1()
{
    try
    {
        ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select MACAddress, PNPDeviceID FROM Win32_NetworkAdapter WHERE MACAddress IS NOT NULL AND PNPDEVICEID IS NOT NULL");
        ManagementObjectCollection mObject = searcher.Get();

        foreach (ManagementObject obj in mObject)
        {
            string pnp = obj["PNPDeviceID"].ToString();
            if (pnp.Contains("PCI\\"))
            {
                string mac = obj["MACAddress"].ToString();
                mac = mac.Replace(":", string.Empty);

                if (string.IsNullOrEmpty(mac))
                {
                    throw new System.Exception("Invalid PCI MAC");
                }

                return mac;
            }
        }
        return string.Empty;
    }
    catch (Exception ex)
    {
        Console.WriteLine("Error Message: " + ex.Message);
    }
    return string.Empty;
}

有了这个说,尽管我的异常处理程序已经抛出错误,但我无法让它抛出错误尽管输出如下:

enter image description here

注意:应该说:Error Message: Invalid PCI MAC

有没有办法检查“空白”是什么?显然,它不是""string.Emptynullnull

2 个答案:

答案 0 :(得分:2)

  

要重现无法检索MAC地址的情况,我   故意禁用我的网卡。这不应该返回MAC   地址,使用此方法:...

禁用该卡后,以下情况始终为false

if (pnp.Contains("PCI\\"))

在这种情况下,foreach循环内没有任何反应,函数返回string.Empty

答案 1 :(得分:0)

您可以使用.Lenght来确定

if (string.IsNullOrEmpty(mac) || mac.Trim().Length == 0)
{
    throw new System.Exception("Invalid PCI MAC");
}