這可能是一個基本問題,但我無法從搜索中找到答案。我的代碼導致將例外寫入 Visual Studio 中的“輸出”->“除錯”視窗。try...catch無論如何,我正在處理下一行代碼。NuGet 包除外。
這是否意味著 NuGet 包中發生了例外并由 Nuget 包處理?我怎樣才能進一步解決這個問題?
private void HandleStorageWriteAvailable(IXDocument doc)
{
using IStorage storage = doc.OpenStorage(StorageName, AccessType_e.Write);
{
Debug.WriteLine("Attempting to write to storage.");
try
{
using (Stream str = storage.TryOpenStream(EntityStreamName, true))
{
if (str is not null)
{
try
{
string test = string.Concat(Enumerable.Repeat("*", 100000));
var xmlSer = new XmlSerializer(typeof(string));
xmlSer.Serialize(str, test);
}
catch (Exception ex)
{
Debug.WriteLine("Something bad happened when trying to write to the SW file.");
Debug.WriteLine(ex);
}
}
else
{
Debug.WriteLine($"Failed to open stream {EntityStreamName} to write to.");
}
}
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
}
}
當例外發生using (Stream str = storage.TryOpenStream(EntityStreamName, true))時,例外發生在行上,代碼繼續到下一行而不是捕獲。
如果該例外由其他東西處理,這是正常行為嗎?我以前從未見過這個。
uj5u.com熱心網友回復:
通常,將設計一個名為 TrySomething 的方法,使其不會拋出例外,而是回傳某種錯誤代碼。
例如檢查Dictionary類:它有一個Add方法,ArgumentException如果鍵已經存在,它可以拋出一個,而一個TryAdd方法只是回傳 false。
很有可能,您的 TryOpenStream 的 IStorage 實作也有一個 OpenStream 方法,而 Try 版本只是一個 try/catch 包裝器,它在出現錯誤時將錯誤輸出到控制臺。
uj5u.com熱心網友回復:
你怎么知道它發生在那條線上?但是,在“例外設定”對話框 (Ctrl Alt E) 中,有一個設定可以啟用中斷處理的例外。對于您可以控制的每種型別的例外。這是一個解釋它如何作業的鏈接:https : //docs.microsoft.com/en-us/visualstudio/debugger/managing-exceptions-with-the-debugger?view=vs-2022
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/362757.html
