public static void HandleException(this IGraphElementWithDebugData element, GraphPointer pointer, Exception ex)
        {
            Ensure.That(nameof(ex)).IsNotNull(ex);

            if (pointer == null)
            {
                Debug.LogError("Caught exception with null graph pointer (flow was likely disposed):\n" + ex);
                return;
            }

            var reference = pointer.AsReference();

            if (!ex.HandledIn(reference))
            {
                element.SetException(pointer, ex);
            }

            while (reference.isChild)
            {
                var parentElement = reference.parentElement;
                reference = reference.ParentReference(true);

                if (parentElement is IGraphElementWithDebugData debuggableParentElement)
                {
                    if (!ex.HandledIn(reference))
                    {
                        debuggableParentElement.SetException(reference, ex);
                    }
                }
            }
        }
Пример #2
0
        public IGraphElementDebugData GetOrCreateElementData(IGraphElementWithDebugData element)
        {
            if (!elementsData.TryGetValue(element, out var elementDebugData))
            {
                elementDebugData = element.CreateDebugData();
                elementsData.Add(element, elementDebugData);
            }

            return(elementDebugData);
        }
        public static void SetException(this IGraphElementWithDebugData element, GraphPointer pointer, Exception ex)
        {
            if (!pointer.hasDebugData)
            {
                return;
            }

            var debugData = pointer.GetElementDebugData <IGraphElementDebugData>(element);

            debugData.runtimeException = ex;
        }
        public static Exception GetException(this IGraphElementWithDebugData element, GraphPointer pointer)
        {
            if (!pointer.hasDebugData)
            {
                return(null);
            }

            var debugData = pointer.GetElementDebugData <IGraphElementDebugData>(element);

            return(debugData.runtimeException);
        }