【发布时间】:2014-03-23 14:55:19
【问题描述】:
这是我用来从用户那里检索 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。
【问题讨论】:
-
试试
string.IsNullOrWhiteSpace()?因为它可能是一个(或多个)空间。 -
您可以设置一个断点并检查该值。也就是说,
mObject中是否可能没有项目?是否有可能有 有 个值但PNPDeviceIDs 中没有一个包含"PCI\\"? -
@ChiChan 我也试过了——不要扔。 @canon,让我试试
mObject -
想一想,
string.Empty不应该被退回来代替吗? -
@theGreenCabbage,这取决于使用情况。但是想象一下,如果你想检查一个空的用户输入并且它是一个文本区域。该人可以键入换行符、空格和制表符,检查所有这些非常烦人。在这种情况下,您想使用
IsNullOrWhiteSpace。
标签: c# exception network-programming