我在一个相当大的网站上工作。我们目前有 4 个 Web 服务器和一个使用 C# 运行 ASP.NET 2.0 的主动被动数据库集群。目前我们的异常处理没有捕获正确的异常抛出。我听说这是因为Server.GetLastError()
它不是线程安全的(注意:我们目前不使用Server.GetLastError().GetBaseException()
这可能是我们没有得到正确错误的原因)。
我们正在启动一个捕获确切异常的项目,因此我们实际上可以看到错误的根本原因,我正在尝试找到最好的方法来做到这一点。
我们的选择是:
- 遍历我们所有的类/方法(数百个,如果不是数千个)添加 try/catch/finally 块以捕获正确的异常。
- 找出一种方法来正确处理 global.asax 中的异常。
所以我想我的问题是:
Server.GetLastError()
线程安全吗?- 如果同时抛出两个异常,是否都会被记录?
- 有没有比我列出的更好的方法来处理这个问题?