ArcGIS Pro 3.2 API Reference Guide
ArcGIS.Core.Data.Topology Namespace / Topology Class / GetErrors Method
The ErrorDescription which describes the details of how topology errors should be retrieved.
Example

In This Topic
    GetErrors Method
    In This Topic
    Gets the error features associated with a topology. This method must be called on the MCT. Use QueuedTask.Run.
    Syntax

    Parameters

    description
    The ErrorDescription which describes the details of how topology errors should be retrieved.

    Return Value

    A list of TopologyError. If no error feature exists that matches the specification in description, an empty list is returned.
    Exceptions
    ExceptionDescription
    description is null.
    A geodatabase-related exception has occurred.
    Example
    GetTopologyErrors
    // Get all the errors and exceptions currently associated with the topology.
    
    IReadOnlyList<TopologyError> allErrorsAndExceptions = topology.GetErrors(new ErrorDescription(topology.GetExtent()));
    Console.WriteLine($"errors and exceptions count => {allErrorsAndExceptions.Count}");
            
    Console.WriteLine("OriginClassName \t OriginObjectID \t DestinationClassName \t DestinationObjectID \t RuleType \t IsException \t Shape type \t Shape width & height \t  Rule ID \t");
    
    foreach (TopologyError error in allErrorsAndExceptions)
    {
      Console.WriteLine($"'{error.OriginClassName}' \t {error.OriginObjectID} \t '{error.DestinationClassName}' \t " +
                        $"{error.DestinationObjectID} \t {error.RuleType} \t {error.IsException} \t {error.Shape.GeometryType} \t " +
                        $"{error.Shape.Extent.Width},{error.Shape.Extent.Height} \t {error.RuleID}");
    }
    
    MarkAndUnmarkAsErrors
    // Get all the errors due to features violating the "PointProperlyInsideArea" topology rule.
    
    using (TopologyDefinition topologyDefinition = topology.GetDefinition())
    {
      TopologyRule pointProperlyInsideAreaRule = topologyDefinition.GetRules().First(rule => rule.RuleType == TopologyRuleType.PointProperlyInsideArea);
    
      ErrorDescription errorDescription = new ErrorDescription(topology.GetExtent())
      {
        TopologyRule = pointProperlyInsideAreaRule
      };
    
      IReadOnlyList<TopologyError> errorsDueToViolatingPointProperlyInsideAreaRule = topology.GetErrors(errorDescription);
      Console.WriteLine($"There are {errorsDueToViolatingPointProperlyInsideAreaRule.Count} feature violating the 'PointProperlyInsideArea' topology rule.");
    
      // Mark all errors from features violating the 'PointProperlyInsideArea' topology rule as exceptions.
    
      foreach (TopologyError error in errorsDueToViolatingPointProperlyInsideAreaRule)
      {
        topology.MarkAsException(error);
      }
    
      // Now verify all the errors from features violating the 'PointProperlyInsideArea' topology rule have indeed been
      // marked as exceptions.
      //
      // By default, ErrorDescription is initialized to ErrorType.ErrorAndException.  Here we want ErrorType.ErrorOnly.
    
      errorDescription = new ErrorDescription(topology.GetExtent())
      {
        ErrorType = ErrorType.ErrorOnly,
        TopologyRule = pointProperlyInsideAreaRule
      };
    
      IReadOnlyList<TopologyError> errorsAfterMarkedAsExceptions = topology.GetErrors(errorDescription);
      Console.WriteLine($"There are {errorsAfterMarkedAsExceptions.Count} feature violating the 'PointProperlyInsideArea' topology rule after all the errors have been marked as exceptions.");
    
      // Finally, reset all the exceptions as errors by unmarking them as exceptions.
    
      foreach (TopologyError error in errorsDueToViolatingPointProperlyInsideAreaRule)
      {
        topology.UnmarkAsException(error);
      }
    
      IReadOnlyList<TopologyError> errorsAfterUnmarkedAsExceptions = topology.GetErrors(errorDescription);
      Console.WriteLine($"There are {errorsAfterUnmarkedAsExceptions.Count} feature violating the 'PointProperlyInsideArea' topology rule after all the exceptions have been reset as errors.");
    }
    
    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3 or higher.
    See Also