静态异常实例

时间:2009-04-19 13:02:41

标签: c# multithreading exception

静态异常实例是否可以安全使用?有什么理由可以避免以下情况吗?

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;
        ....
    }
}

1 个答案:

答案 0 :(得分:8)

异常的stacktrace在抛出时被设置(http://msdn.microsoft.com/en-us/library/system.exception.stacktrace.aspx),因此该代码不是线程安全的。

多个线程将使用相同的异常对象,任何依赖异常内容的人都会得到令人困惑的结果。