这是我用来从我的用户检索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;
}
与此说,尽管地方我的异常处理程序抛出一个错误,我无法得到它抛出一个错误,尽管我的输出是这样的:这不应该返回一个MAC地址,使用这个方法:
注:应该说:Error Message: Invalid PCI MAC
。
有什么办法来检查“空白”是什么?显然它不是""
或string.Empty
或null
或null
。
尝试'string.IsNullOrWhiteSpace()'?因为它可能是一个(或更多)空间。 –
您可以设置一个断点并检查该值。也就是说,是否有可能在'mObject'中没有项目?是否有可能存在_are_值,但是没有一个“PNPDeviceID”包含“PCI \\”? – canon
@ChiChan我也尝试过 - 没有投掷。 @canon,让我试试'mObject' – theGreenCabbage