c# - 静态异常实例

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

最佳答案

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

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

关于c# - 静态异常实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/765383/

相关文章:

C# 应用程序抛出 system.BadImageFormat 异常。在 x64 中编译的依赖项

c# - 如果 API 已经是多线程的,您是否需要对调用者进行多线程处理? ASP.Net MVC

c# - 我将如何等待多个线程停止?

Java - 创建多个对象后如何避免 StackOverflow?

c# - 尝试将 Web 服务引用添加到项目时出现 HTTP 状态 400

c# - 从目录中删除只读属性

c# - 如何通过 Interop 访问 Excel 的 "Save Thumbnail"功能?

java - 线程完成时是否发出通知信号?为什么此代码示例有效?

python - 如何在Python中下载文件但忽略错误?

java - BindingResult 和 bean 名称 'userProfile' 的普通目标对象都不能作为请求属性