22 lines
673 B
C#
22 lines
673 B
C#
using System;
|
|
using System.Runtime.Serialization;
|
|
|
|
namespace UnityEngine.UI.Tests.Utils
|
|
{
|
|
class ExceptionUtils
|
|
{
|
|
public static void PreserveStackTrace(Exception e)
|
|
{
|
|
var ctx = new StreamingContext(StreamingContextStates.CrossAppDomain);
|
|
var mgr = new ObjectManager(null, ctx);
|
|
var si = new SerializationInfo(e.GetType(), new FormatterConverter());
|
|
|
|
e.GetObjectData(si, ctx);
|
|
mgr.RegisterObject(e, 1, si); // prepare for SetObjectData
|
|
mgr.DoFixups(); // ObjectManager calls SetObjectData
|
|
|
|
// voila, e is unmodified save for _remoteStackTraceString
|
|
}
|
|
}
|
|
}
|