在C,Pascal和C++中,可以使用FormatMessage函數檢索對應於COM HRESULT錯誤代碼的「友好」錯誤消息。 This question包含演示C++方法的示例代碼。當然,構建一個託管的C++程序集來執行C#和VB.NET代碼的這個功能是可能的,但是我想知道:有沒有辦法使用.NET系統庫來翻譯COM錯誤代碼?在C#中轉換COM錯誤代碼
6
A
回答
6
FormatMessage已由Win32Exception內部使用。例如:
using System;
class Program {
static void Main(string[] args) {
var ex = new System.ComponentModel.Win32Exception(unchecked((int)0x80004005));
Console.WriteLine(ex.Message);
Console.ReadLine();
}
}
輸出:未指定的錯誤
一定要避免繞過正常HRESULT檢查的方法是,其COM互操作層的CLR實現。它使用IErrorInfo從COM服務器獲取豐富的錯誤文本。這會讓你獲得'真正'的錯誤信息,而不是通用的錯誤信息。
2
不要忽視的是,頁面會轉至How to: Map HRESULTs and Exceptions鏈接。
相關問題
- 1. WiX COM +錯誤代碼
- 2. 在C#中轉換Java代碼。操作員錯誤
- 3. 在C#代碼轉換java代碼
- 4. 轉換C#代碼
- 5. C#代碼轉換
- 6. 錯誤代碼轉換,從C#和C++/CLI
- 7. 轉換C++代碼,以C#
- 8. 轉換代碼C++到C#
- 9. 轉換C++代碼到C#
- 10. MinimalComps Flash GUI和代碼轉換錯誤
- 11. C++中的轉換錯誤
- 12. C++矢量迭代器轉換錯誤
- 13. C#錯誤轉換
- 14. Internet Explorer COM自動化:將數字錯誤代碼轉換爲字符串
- 15. 錯誤在asp.net C#代碼
- 16. 轉換vb.net代碼轉換爲C#.NET
- 17. 轉換代碼轉換成C#
- 18. 將JavaScript代碼轉換爲C代碼
- 19. 將PHP代碼轉換爲C#代碼
- 20. 將Java代碼轉換爲C#代碼
- 21. 將僞代碼轉換爲C#代碼
- 22. 轉換Matlab代碼爲C代碼
- 23. C#錯誤代碼
- 24. c代碼錯誤
- 25. C++代碼錯誤
- 26. 代碼錯誤? [C]
- 27. VB代碼轉換爲C#編譯錯誤
- 28. 錯誤時試圖C#代碼轉換爲VB.Net
- 29. 將C代碼轉換爲mips會給出錯誤
- 30. 轉換Java代碼到C#
它不看這個,它將提供您可以從FormatMessage()獲得的描述性消息。例如,使用GetExceptionForHR()從E_FAIL創建的Exception的Message屬性只是說:「錯誤HRESULT E_FAIL已經從調用COM組件返回」 – 2011-01-07 01:35:31