{"record":{"id":"f5265f06e9b52345","repo":"dotnet/reactive","slug":"observer-never","errorCode":null,"errorMessage":"observer","messagePattern":"observer","errorType":"exception","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"Rx.NET/Source/src/System.Reactive/Linq/Observable/Never.cs","lineNumber":29,"sourceCode":"        /// <summary>\n        /// The only instance for a TResult type: this source\n        /// is completely stateless and has a constant behavior.\n        /// </summary>\n        internal static readonly IObservable<TResult> Default = new Never<TResult>();\n\n        /// <summary>\n        /// No need for instantiating this more than once per TResult.\n        /// </summary>\n        private Never()\n        {\n\n        }\n\n        public IDisposable Subscribe(IObserver<TResult> observer)\n        {\n            if (observer == null)\n            {\n                throw new ArgumentNullException(nameof(observer));\n            }\n\n            return Disposable.Empty;\n        }\n    }\n}\n","sourceCodeStart":11,"sourceCodeEnd":36,"githubUrl":"https://github.com/dotnet/reactive/blob/94b5d5ab912789f5abe9a72138a25bbd716fe59c/Rx.NET/Source/src/System.Reactive/Linq/Observable/Never.cs#L11-L36","documentation":"Observable.Never's Subscribe validates its observer argument and throws ArgumentNullException when null is passed. Never never emits anything, but it still requires a valid observer to return Disposable.Empty for.","triggerScenarios":"Calling Observable.Never<TResult>().Subscribe(null) or passing a null IObserver into the underlying NeverObservable.Subscribe.","commonSituations":"Programmatic subscription plumbing where the observer variable is uninitialized or the result of a failed factory; reflective/abstracted subscription code paths.","solutions":["Pass a non-null IObserver<TResult> instance to Subscribe.","If you have no observer, use Subscribe(Action<T>) overloads or Observer.Create<T> to build one.","Add a null check before subscribing."],"exampleFix":"// before\nObservable.Never<int>().Subscribe(myObserver); // myObserver is null\n// after\nif (myObserver != null) Observable.Never<int>().Subscribe(myObserver);","handlingStrategy":"validation","validationCode":"// C#\nif (observer is null) throw new ArgumentNullException(nameof(observer));\nvar sub = Observable.Never<int>().Subscribe(observer);","typeGuard":"// C#\nstatic bool IsValidObserver<T>(IObserver<T> o) => o is not null;","tryCatchPattern":"try { Observable.Never<int>().Subscribe(observer); }\ncatch (ArgumentNullException ex) { /* observer was null */ }","preventionTips":["Use Action-based Subscribe overloads to avoid passing raw observers.","Build observers with Observer.Create<T> instead of nullable fields.","Null-check observers at subscription boundaries."],"tags":["null-argument","never-operator","subscribe","argumentnull"],"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"}