從使用者的角度來說,當程式出現異常時只要有給點簡單的提示就行.但從開發者的角度來說就需要非常詳細的資訊,這對追蹤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去檢視,比如硬碟,主機板,網絡卡得一些資訊
使用traceback獲取詳細的異常資訊
try 1 0except exception,e print e輸出結果是integer division or modulo by zero,只知道是報了這個錯,但是卻不知道在哪個檔案哪個函式哪一行報的錯。下面使用traceback模組 import traceback try 1 0excep...
traceback模組 獲取詳細的異常資訊
try 1 0except exception,e print e 輸出結果是integer division or modulo by zero,只知道是報了這個錯,但是卻不知道在哪個檔案哪個函式哪一行報的錯。下面使用traceback模組 import traceback try 1 0exce...
C 獲取檔案詳細備註資訊
專案中引用 shell32.dll using system.io using shell32 shellclass sh new shellclass folder dir sh.namespace path.getdirectoryname strpath folderitem item dir...