使用反射或通过HttpContext.Current.Server.GetLastError()获取最后一个异常

本文关键字:GetLastError 获取 异常 最后一个 Server Current 反射 HttpContext | 更新日期: 2023-09-27 18:23:43

我有一个方法,当抛出异常时会调用它。只有Exception.ToString()被传递给它。现在不可能更改参数以接受Exception而不是字符串,因为我们必须更改很多页面,而我对此无法控制(请不要让任何人告诉我这样做,因为相信我,我很乐意这样做)。我们已经有了一个处理异常的类,但我有机会更新这个方法,我想知道是否可以使用反射或HttpContext.Current.Server.GetLastError()获取最后一个异常。对于GetLastError(),它不起作用,因为已经处理了异常。有没有办法通过反思或其他方式来解决这个问题?非常感谢您的帮助。如果之前讨论过这个问题,请给我看看,因为我找不到类似的问题。

使用反射或通过HttpContext.Current.Server.GetLastError()获取最后一个异常

我现在使用的快速解决方案(使用异常和反射中的一些信息):

 string typeName = err.Substring(0, err.IndexOf(":"));
 string message = err.Length > typeName.Length + 2 ? err.Substring(err.IndexOf(":") + 1) : string.Empty;
 Type type = Type.GetType(typeName);
 ConstructorInfo ctor = type.GetConstructor(new[] { typeof(string) });
 object exception = ctor.Invoke(new object[] { message });

string err是Exception.ToString(),它将具有异常类型,然后我将消息作为ToString方法的其余部分。这实际上是可行的。如果我想非常明确,我可以使用反射来编辑每个属性,但这里有错误的空间,tostring实际上会包含所有内容,因为我正在创建异常类型,所以它在后台都很好。:)希望这能帮助