TheAlgorithms/C-Sharp · error · InvalidOperationException

Graph overflow.

Error message

Graph overflow.

What it means

ThrowIfOverflow guards the fixed-capacity graph: AddVertex throws InvalidOperationException('Graph overflow.') when Count == capacity, i.e. the graph is full and cannot accept another vertex. This is a hard capacity limit, not an auto-growing collection.

Solutions

  1. Construct the graph with a larger capacity.
  2. Check Count against capacity before calling AddVertex.
  3. Catch InvalidOperationException and rebuild/migrate to a bigger graph.

Example fix

// before
var graph = new DirectedWeightedGraph<string>(10);
foreach (var v in allVertices) graph.AddVertex(v); // throws if allVertices.Count > 10
// after
var graph = new DirectedWeightedGraph<string>(Math.Max(10, allVertices.Count));
foreach (var v in allVertices) graph.AddVertex(v);
Defensive patterns

Strategy: validation

Validate before calling

if (graph.Count < capacity) { graph.AddVertex(v); } else { /* resize or reject */ }

Type guard

static bool CanAcceptVertex(DirectedWeightedGraph<T> g) => g.Count < g.Capacity; // if capacity exposed

Try / catch

try { graph.AddVertex(v); }
catch (InvalidOperationException ex) when (ex.Message == "Graph overflow.") { /* rebuild with larger capacity */ }

Prevention

When it happens

Trigger: Calling AddVertex on a graph whose vertex count already equals the capacity given at construction (e.g. capacity 10 and adding an 11th vertex).

Common situations: Underestimating the number of vertices when sizing the graph, loading a dataset larger than the configured capacity, or reusing a full graph instance across batches.

Understand the failure class

Background: "value must be between 0 and 1" / "out of range" / "must not be negative" errors: fixing range-validation failures across open-source libraries — this error's family across 42 libraries.

Related errors


AI-assisted analysis of TheAlgorithms/C-Sharp@96e2905cab (2026-09-13). Data as JSON: /api/errors/6ba65c615a377340. Report an issue: GitHub.

Appendix: source

Thrown at DataStructures/Graph/DirectedWeightedGraph.cs:222

        if (weight.Equals(0.0d))
        {
            throw new InvalidOperationException("Edge weight cannot be zero.");
        }
    }

    private static void ThrowIfEdgeExists(double currentEdgeWeight)
    {
        if (!currentEdgeWeight.Equals(0.0d))
        {
            throw new InvalidOperationException($"Vertex already exists: {currentEdgeWeight}");
        }
    }

    private void ThrowIfOverflow()
    {
        if (Count == capacity)
        {
            throw new InvalidOperationException("Graph overflow.");
        }
    }

    private void ThrowIfVertexNotInGraph(Vertex<T> vertex)
    {
        if (vertex.Graph != this)
        {
            throw new InvalidOperationException($"Vertex does not belong to graph: {vertex}.");
        }
    }
}

View on GitHub (pinned to 96e2905cab)