做下面的嘗試捕捉有什麼更好的方法?目前,我在每個WMI字段都有自己的try catch語句。嘗試捕捉問題
我不想讓整個班級進入一個大規模的嘗試捕捉,因爲我有問題與字段不顯示任何東西回來(嘗試這一點,並不適合我所做的)。
我有大約25個其他WMI字段需要輸入,並且想知道是否有更簡單的方法來執行此操作?
private void cmbHdd_SelectedIndexChanged(object sender, EventArgs e)
ManagementObjectSearcher mosDisks = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive WHERE Model = '" + cmbHdd.SelectedItem + "'");
foreach (ManagementObject moDisk in mosDisks.Get())
{
try
{
lblSystemName.Text = "SystemName: " + moDisk["systemname"];
}
catch (Exception)
{
lblSystemName.Text = "SystemName: WMI Error"; ;
}
try
{
lblType.Text = "Type: " + moDisk["MediaType"].ToString();
}
catch (Exception)
{
lblType.Text = "Type: WMI Error";
}
}
爲什麼你會在那裏得到例外?我會努力的原因,而不是症狀。 –
僅當moDisk [「MediaType」]爲空時纔會生成異常。但是這可以通過使用if語句來阻止。 – Narendra
問題是,如果我有一個說「可用性」的WMI字段,那麼運行這個服務器的其中一個服務器就沒有任何理由(這很好)的「可用性」。然而,「Availability」之後的下一個WMI字段可能是「FirmwareVersion」(它確實存在)。然而,由於「Availability」返回了一個異常(wmi類不存在),我注意到「FirmwareVersion」然後什麼都不顯示(即使它應該)。我被告知,這是因爲我有一個大規模的嘗試捕捉方法,得到一個例外,並直接趕上,而不是繼續。 – lara400