Экземпляр статического исключения - PullRequest
0 голосов
/ 19 апреля 2009

Безопасны ли экземпляры статических исключений? Любая веская причина, чтобы избежать следующего?

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 Ответ

8 голосов
/ 19 апреля 2009

Трассировка стека исключения устанавливается, когда она генерируется (http://msdn.microsoft.com/en-us/library/system.exception.stacktrace.aspx),, поэтому этот код не является потокобезопасным.

Несколько потоков будут использовать один и тот же объект исключения, и любой, кто полагается на содержимое исключения, получит непонятные результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...