{"record":{"id":"5bca295161b02930","repo":"dotnet/reactive","slug":"source3","errorCode":null,"errorMessage":"source3","messagePattern":"source3","errorType":"validation","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"Rx.NET/Source/src/System.Reactive/Linq/Observable.Multiple.Zip.cs","lineNumber":863,"sourceCode":"        /// <param name=\"source14\">Fourteenth observable source.</param>\n        /// <param name=\"resultSelector\">Function to invoke for each series of elements at corresponding indexes in the sources.</param>\n        /// <returns>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</returns>\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"source1\"/> or <paramref name=\"source2\"/> or <paramref name=\"source3\"/> or <paramref name=\"source4\"/> or <paramref name=\"source5\"/> or <paramref name=\"source6\"/> or <paramref name=\"source7\"/> or <paramref name=\"source8\"/> or <paramref name=\"source9\"/> or <paramref name=\"source10\"/> or <paramref name=\"source11\"/> or <paramref name=\"source12\"/> or <paramref name=\"source13\"/> or <paramref name=\"source14\"/> or <paramref name=\"resultSelector\"/> is null.</exception>\n        public static IObservable<TResult> Zip<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TSource14, TResult>(this IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3, IObservable<TSource4> source4, IObservable<TSource5> source5, IObservable<TSource6> source6, IObservable<TSource7> source7, IObservable<TSource8> source8, IObservable<TSource9> source9, IObservable<TSource10> source10, IObservable<TSource11> source11, IObservable<TSource12> source12, IObservable<TSource13> source13, IObservable<TSource14> source14, Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11, TSource12, TSource13, TSource14, TResult> resultSelector)\n        {\n            if (source1 == null)\n            {\n                throw new ArgumentNullException(nameof(source1));\n            }\n\n            if (source2 == null)\n            {\n                throw new ArgumentNullException(nameof(source2));\n            }\n\n            if (source3 == null)\n            {\n                throw new ArgumentNullException(nameof(source3));\n            }\n\n            if (source4 == null)\n            {\n                throw new ArgumentNullException(nameof(source4));\n            }\n\n            if (source5 == null)\n            {\n                throw new ArgumentNullException(nameof(source5));\n            }\n\n            if (source6 == null)\n            {\n                throw new ArgumentNullException(nameof(source6));\n            }\n\n            if (source7 == null)","sourceCodeStart":845,"sourceCodeEnd":881,"githubUrl":"https://github.com/dotnet/reactive/blob/94b5d5ab912789f5abe9a72138a25bbd716fe59c/Rx.NET/Source/src/System.Reactive/Linq/Observable.Multiple.Zip.cs#L845-L881","documentation":"The 14-source Zip overload checks each input sequence in order; source3 being null triggers ArgumentNullException with parameter name 'source3' at line 863. Rx validates all arguments eagerly so the failure surfaces at the call site rather than during subscription.","triggerScenarios":"Calling the 14-argument Observable.Zip with null as the third IObservable<TSource3> argument.","commonSituations":"A conditional pipeline that skipped creating the third stream, config-driven stream lookup returning null, or argument misalignment when refactoring the long parameter list.","solutions":["Pass a valid observable in position 3; use Observable.Empty<TSource3>() if the stream is intentionally absent.","Fix the factory/method that produced the null third source.","Guard with null checks or coalescing for all sources before the call.","Double-check the positional ordering of the 14 source arguments."],"exampleFix":"// before\nvar zipped = Observable.Zip(s1, s2, null, s4, ..., s14, selector);\n// after\nvar zipped = Observable.Zip(s1, s2, s3 ?? Observable.Empty<TSource3>(), s4, ..., s14, selector);","handlingStrategy":"validation","validationCode":"if (source3 == null) throw new ArgumentNullException(nameof(source3));","typeGuard":"static IObservable<T> NonNull<T>(IObservable<T> s) => s ?? Observable.Empty<T>();","tryCatchPattern":"try { var zipped = Observable.Zip(source1, source2, source3, ...); } catch (ArgumentNullException ex) when (ex.ParamName == \"source3\") { /* substitute default source or abort */ }","preventionTips":["Ensure all stream-producing methods return empty observables, never null.","Check argument ordering when refactoring long Zip signatures.","Null-check sources with a loop over an array before invoking Zip."],"tags":["rx","null-argument","reactive-extensions"],"backgroundTag":"null-argument","analyzedSha":"94b5d5ab912789f5abe9a72138a25bbd716fe59c","analyzedAt":"2026-09-15T02:26:24.759Z","contentChangedAt":"2026-09-15T02:26:24.759Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}