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
|
||
|
}
|
||
|
}
|
||
|
}
|