簡體   English   中英

是否可以將Debug.Assert設置為僅引發異常,而不是在C#中彈出窗口?

[英]Can Debug.Assert be set to just throw an exception instead of popping up a window in C#?

每當我的C#應用​​程序中的斷言失敗時,我都想引發一個異常並使編輯器跳到該位置。 但是會彈出一個中止/重試/忽略消息框。 有沒有辦法控制這種行為?

不直接:這就是Debug.Assert所做的。 請參閱說明文件

http://msdn.microsoft.com/zh-CN/library/system.diagnostics.debug.aspx

也許您想使用除Debug.Assert之外的其他工具? 例如,如果無法處理就拋出異常,或者在需要時調用一些應用程序定義的onError處理程序?

或者,您可以通過添加偵聽器並掛接到該偵聽器來獲得所需的內容。 請參閱文檔。

您可以添加一個自定義的TraceListener,它在.Fail()方法中的任何一個上引發異常:

public class ThrowListener : TextWriterTraceListener
{
    public override void Fail(string message)
    {
        throw new Exception(message);
    }

    public override void Fail(string message, string detailMessage)
    {
        throw new Exception(message);
    }
}

我可能會派生出您自己的同時包含message和detailMessage的Exception類型,因此更明顯的是異常來自何處。

您將不得不提高對.Assert()調用的調用堆棧,因為調試器可能會直接將您帶到throw

您可以這樣添加它:

Debug.Listeners.Insert(0, new ThrowListener());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM