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