程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#獲取系統相關信息_詳細異常信息

C#獲取系統相關信息_詳細異常信息

編輯:C#入門知識

從用戶的角度來說,當程序出現異常時只要有給點簡單的提示就行.但從開發者的角度來說就需要非常詳細的信息,這對追蹤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去查看,比如硬盤,主板,網卡得一些信息
 

 

摘自 聰明的笨蛋

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved