從用戶的角度來說,當程序出現異常時只要有給點簡單的提示就行.但從開發者的角度來說就需要非常詳細的信息,這對追蹤Bug很有用.異常相關的詳細信息可以記錄到日志文件中.這樣你自己測試時比較方便點,而且做用戶支持時也方便,如果用戶碰到啥問題要他們把錯誤日志發過來就行.
異常處理語句通常的形式一般如下:
try
{
//some code
}
catch(Exception ex)
{
}
我們通常獲取的提示信息是ex.Message,簡單描述了下出現啥異常了.但ex裡面還包括其他些詳細的信息
ex.GetType().FullName.詳細的異常名字,我們知道Exception是比較籠統的,還有些更詳細的異常名字比如System.IndexOutOfRangeException
ex.Source 返回應用程序的名字
ex.TargetSite 返回是出異常的函數的名字
ex.StackTrace 這裡面的信息比較多,有出錯的函數名字,還有具體是哪一cs源文件中,並且詳細到源代碼中哪一行
除了這些信息外,有些時候可能還想知道版本號,程序運行的操作系統和硬件的相關信息.因為有時一些Bug可能只在某個操作系統中才出現.當然你能用其他方法知道,但通過寫代碼把這些信息收集起來更方便.
System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();//獲取程序的版本號
電腦軟件,硬件相關信息的獲取
using System.Management; //先add reference,找到System.Mangement,點OK
string msg = string.Empty ;
ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * From Win32_OperatingSystem");
ManagementObjectCollection queryCollection = query.Get();
foreach (ManagementBaseObject managementObject in queryCollection)
{
msg = managementObject["Caption"] + //操作系統名字,比如Microsoft Windows 7 Professional
managementObject["Version"] + //系統版本號,比如6.1.7601
managementObject["Manufacturer"] + //操作系統生產廠商,比如Microsoft Corporation
managementObject["csname"] + //電腦名,這個是自己隨便取的
managementObject["WindowsDirectory"]; //系統安裝目錄,比如c:\Windows
}
query = new ManagementObjectSearcher("SELECT * From Win32_ComputerSystem");
queryCollection = query.Get();
foreach (ManagementObject managementObject in queryCollection)
{
msg += managementObject["Manufacturer"] + //電腦廠商,比如Dell Inc.
managementObject["model"] + //型號,比如OptiPlex 755
managementObject["SystemType"] + //cpu類型,比如x64-based PC,表示64位的cpu
managementObject["totalphysicalmemory"].ToString() + //內存大小
managementObject["Domain"] + //域名
managementObject["UserName"] ; //電腦開機時的用戶名
;
}
反正電腦軟硬件相關的很多信息都可以通過類ManagementObjectSearcher去查看,比如硬盤,主板,網卡得一些信息
摘自 聰明的笨蛋