{"record":{"id":"535e0b7eed43508c","repo":"PrismLibrary/Prism","slug":"source","errorCode":null,"errorMessage":"source","messagePattern":"source","errorType":"exception","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"src/Maui/Prism.Maui/Navigation/Regions/Navigation/RegionNavigationService.cs","lineNumber":106,"sourceCode":"    public void RequestNavigate(Uri target, Action<NavigationResult> navigationCallback, INavigationParameters regionParameters)\n    {\n        if (navigationCallback == null)\n            throw new ArgumentNullException(nameof(navigationCallback));\n\n        try\n        {\n            DoNavigate(target, navigationCallback, regionParameters);\n        }\n        catch (Exception e)\n        {\n            NotifyNavigationFailed(new NavigationContext(this, target), navigationCallback, e);\n        }\n    }\n\n    private void DoNavigate(Uri source, Action<NavigationResult> navigationCallback, INavigationParameters regionParameters)\n    {\n        if (source == null)\n            throw new ArgumentNullException(nameof(source));\n\n        if (Region == null)\n            throw new InvalidOperationException(Resources.NavigationServiceHasNoRegion);\n\n        _currentNavigationContext = new NavigationContext(this, source, regionParameters);\n\n        // starts querying the active views\n        RequestCanNavigateFromOnCurrentlyActiveView(\n            _currentNavigationContext,\n            navigationCallback,\n            Region.ActiveViews.OfType<VisualElement>().ToArray(),\n            0);\n    }\n\n    private void RequestCanNavigateFromOnCurrentlyActiveView(\n        NavigationContext navigationContext,\n        Action<NavigationResult> navigationCallback,\n        VisualElement[] activeViews,","sourceCodeStart":88,"sourceCodeEnd":124,"githubUrl":"https://github.com/PrismLibrary/Prism/blob/358118cd640d9a22ff8cf21c8ad197fa038b7990/src/Maui/Prism.Maui/Navigation/Regions/Navigation/RegionNavigationService.cs#L88-L124","documentation":"DoNavigate validates the navigation target Uri before building the NavigationContext. A null source Uri means there is nothing to navigate to, so Prism throws ArgumentNullException immediately instead of failing later inside content loading.","triggerScenarios":"Calling RequestNavigate(null, callback, parameters) or passing a Uri variable that failed to initialize (e.g. Uri.TryCreate result ignored).","commonSituations":"Building the target Uri from a string that was null/empty; navigation requests assembled from configuration or deep-link data that is missing.","solutions":["Ensure the Uri passed to RequestNavigate is non-null before calling.","Use Uri.TryCreate and check success before navigating.","Validate deep-link/config data that feeds the Uri."],"exampleFix":"// before\nregionNavigationService.RequestNavigate(uri, callback, parameters); // uri may be null\n// after\nif (uri == null) throw new ArgumentException(\"Navigation target is required\");\nregionNavigationService.RequestNavigate(uri, callback, parameters);","handlingStrategy":"validation","validationCode":"if (string.IsNullOrEmpty(targetString) || !Uri.TryCreate(targetString, UriKind.RelativeOrAbsolute, out var uri))\n    throw new ArgumentException($\"Invalid navigation target: {targetString}\");\nnavigationService.RequestNavigate(uri, callback, parameters);","typeGuard":"bool IsValidTarget(Uri u) => u is not null;","tryCatchPattern":"try\n{\n    navigationService.RequestNavigate(uri, result => OnNavigated(result));\n}\ncatch (ArgumentNullException)\n{\n    // handle missing navigation target\n}","preventionTips":["Validate Uri inputs with Uri.TryCreate before navigating.","Check deep-link/configuration data for null before building navigation requests.","Centralize navigation calls in one service that validates targets."],"tags":["null-argument","navigation","uri","prism"],"backgroundTag":"null-argument","analyzedSha":"358118cd640d9a22ff8cf21c8ad197fa038b7990","analyzedAt":"2026-09-15T15:00:31.079Z","contentChangedAt":"2026-09-15T15:00:31.079Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}