我有一个方法,当抛出异常时会调用它。只有Exception.ToString()
被传递给它。现在不可能更改参数以接受Exception
而不是字符串,因为我们必须更改很多页面,而我对此无法控制(请不要让任何人告诉我这样做,因为相信我,我很乐意这样做)。我们已经有了一个处理异常的类,但我有机会更新这个方法,我想知道是否可以使用反射或HttpContext.Current.Server.GetLastError()
获取最后一个异常。对于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实际上会包含所有内容,因为我正在创建异常类型,所以它在后台都很好。:)希望这能帮助