从异常详细信息中获取发生异常的类名和方法名

本文关键字:异常 方法 详细信息 获取 | 更新日期: 2023-09-27 18:05:04

我在我的Global.asax.cs中有这个Application_Error事件,它将获得我的应用程序中发生的任何未处理的异常。我得到了错误信息。我想要得到的是异常发生的类名和方法名,以便更容易跟踪异常的原因。请帮助。

Global.asax.cs

protected void Application_Error(object sender, EventArgs e)
    {
        var errMsg = Server.GetLastError().Message;
        if (string.IsNullOrWhiteSpace(errMsg)) return;
        //Get Class name and method name
        //ErrorLog.SaveLog(errMsg, Classname, Methodname);
        Context.ClearError();
    }

从异常详细信息中获取发生异常的类名和方法名

您可以使用StackTrace在调用堆栈中找到这些信息,参见http://msdn.microsoft.com/en-us/library/system.diagnostics.stackframe.aspx的示例。

最简单的方法是记录日志:

Server.GetLastError().ToString()

这包括异常和任何内部异常的错误消息和堆栈跟踪,在某些情况下,还包括其他有用的信息(*)。

注意,Server.GetLastError().StackTrace只会给你外部异常的堆栈跟踪,不太有用。

(*)我所说的"其他有用信息"是指任何异常派生类都可以覆盖ToString以添加特定于该异常类型的附加信息。例如,SqlException覆盖ToString以附加ClientConnectionId