这是我用来从用户检索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;
}
有了这个说,尽管我的异常处理程序已经抛出错误,但我无法让它抛出错误尽管输出如下:
注意:应该说:Error Message: Invalid PCI MAC
。
有没有办法检查“空白”是什么?显然,它不是""
,string.Empty
,null
或null
。
答案 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");
}