静态异常实例是否可以安全使用?有什么理由可以避免以下情况吗?
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;
....
}
}
答案 0 :(得分:8)
异常的stacktrace在抛出时被设置(http://msdn.microsoft.com/en-us/library/system.exception.stacktrace.aspx),因此该代码不是线程安全的。
多个线程将使用相同的异常对象,任何依赖异常内容的人都会得到令人困惑的结果。