我使用的是我從互聯網上獲取的利用C#中的網絡攝像機的dll。如果找不到網絡攝像頭連接,我想顯示「無法找到要使用的攝像頭,請確認此時沒有其他應用正在使用您的攝像頭,然後重試」。我遇到的問題是dll的創建者在他們的dll編程中包含了一個try-catch ......所以我的try-catch永遠不會看到這個異常,因爲一個「引用未設置爲對象實例的對象」錯誤出現了(通過try/catch格式化成MessageBox)。有沒有一種方法可以在顯示消息並顯示自己的內容之前覆蓋內置的錯誤處理?C#覆蓋try-catch在另一個功能
回答
如果你得到「對象沒有被設置爲對象的實例」(NullReferenceException
),那麼很可能它們實際上沒有發現異常。
如果你想捕捉那個確切的案例(並讓其他錯誤,你不知道和不能處理掉 - 通過適當的方式來做異常處理),你可以嘗試讓堆棧變髒包含異常信息:
class Program
{
public static void DoSomething()
{
string blah = null;
Console.WriteLine(blah.Length);
}
static void Main(string[] args)
{
try
{
DoSomething();
}
catch (NullReferenceException e)
{
string methodName = e.TargetSite.Name;
Console.WriteLine(methodName);
System.Diagnostics.StackTrace trace =
new System.Diagnostics.StackTrace(e, true);
int lineNumber = trace.GetFrame(0).GetFileLineNumber();
Console.WriteLine(lineNumber);
if(methodName == "DoSomething" && lineNumber == 13)
{
ShowErrorToUser(); // Todo: Implement this
}
else
{
throw; // Just re-throw the error if you don't know where it came from
}
}
}
}
編輯
在評論它真的被抓,並在消息框中顯示的發現了。
我會留下這個答案,因爲它適用於類似的情況,但不適用於這種情況。請參閱OscarMK的回答。
我試着捕獲一個NullReferenceException,但我仍然得到同樣的結果。我不確定我之前是否清楚或不知道它,但是它出現在一個消息框中,所以我知道他使用catch來顯示他的代碼中發生的任何錯誤。我需要以某種方式覆蓋它,並不知道如何通過我的try/catch能夠處理它,他已經有了。這不是生與死,但我想要一個更好的錯誤信息,有人可能實際上能夠理解。 – Brandon
@Brandon:不,不清楚:)你可以編輯你的問題,使「對象引用...出現」,說一些關於在消息框中顯示的錯誤?另外,如果代碼授權沒有問題,您可以嘗試使用ILSpy之類的代碼將代碼從DLL中取出。 –
這樣做,我不知道那個程序,我將不得不檢查出來。這是一個「開源」項目,因爲它在不同的開源網站上發佈,除非他沒有發佈他的代碼。他只是發佈了他的C#項目文件源代碼。 – Brandon
- 1. 覆蓋/覆蓋功能內的功能
- 2. 覆蓋功能
- 3. 多個文檔就緒功能覆蓋另一個
- 4. 覆蓋實例的下一個功能
- 5. c#覆蓋另一個圖像
- 6. C#:覆蓋MP3文件到另一個
- 7. 從另一個類C#覆蓋KeyDown#
- 8. C/C++ - 覆蓋默認功能
- 9. 從另一個文件覆蓋JS功能
- 10. 覆蓋Object.length功能
- 11. 覆蓋父功能
- 12. 覆蓋postLogin功能
- 13. 在功能覆蓋抽象
- 14. C:從另一個功能
- 15. C++代碼覆蓋期間運行只有一個功能
- 16. 從一個覆蓋層鏈接到另一個覆蓋層
- 17. sass:用另一個覆蓋一個var
- 18. 一個webview覆蓋另一個webview
- 19. 一個htaccess覆蓋另一個
- 20. 在另一個頂部覆蓋圖像
- 21. 將img覆蓋在另一個img上
- 22. DownloaderClientMarshaller.Proxy覆蓋超功能
- 23. OpenLayers覆蓋功能編號
- 24. jqplot enhancedLegendRendrer seriesToggle功能覆蓋
- 25. Jquery覆蓋默認功能
- 26. 覆蓋功能迅速
- 27. iOS中的功能覆蓋
- 28. 的Javascript knockout.js功能覆蓋
- 29. 覆蓋現有功能jquery
- 30. 覆蓋has_many <<功能
找出他們如何先測試WebCam,然後調用他們的方法......除非您想弄清楚如何自動化調試器。 ;-) –
比利,你從哪裏得到這個DLL?媽媽,我從互聯網上得到它! –