一千萬個為什麽

搜索

靜態異常實例

靜態異常實例是否安全使用?有什麽理由避免以下情況?

public class ResourceHttpHandler : IHttpHandler
{
    private static HttpException notFoundException =
                new HttpException(
                    (int)HttpStatusCode.NotFound,
                    "Assembly Not Found");

    public bool IsReusable
    {
        get { return true; }
    }

    public void ProcessRequest(HttpContext context)
    {
        ....
        throw notFoundException;
        ....
    }
}

最佳答案

引發異常的堆棧跟蹤時( http:// msdn.microsoft.com/en-us/library/system.exception.stacktrace.aspx ),所以這段代碼不是線程安全的。

多個線程將使用相同的異常對象,任何依賴異常內容的人都會得到令人困惑的結果。

轉載註明原文: 靜態異常實例