src/main/java/io/reactivex/Observable.java
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.NONE)
    public final Single<T> elementAtOrError(long index) {
        if (index < 0) {
            throw new IndexOutOfBoundsException("index >= 0 required but it was " + index);
        }
        return RxJavaPlugins.onAssembly(new ObservableElementAtSingle<T>(this, index, null));
    }
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.NONE)
    public final Single<T> elementAtOrError(long index) {
        if (index < 0) {
            throw new IndexOutOfBoundsException("index >= 0 required but it was " + index);
        }
        return RxJavaPlugins.onAssembly(new ObservableElementAtSingle<T>(this, index, null));
    }
Returns a Single that emits the item found at a specified index in a sequence of emissions from this Observable
or signals a {@link NoSuchElementException} if this Observable signals fewer elements than index.
<p>
<img width="640" height="362" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/elementAtOrError.o.png" alt="">
<dl>
<dt><b>Scheduler:</b></dt>
<dd>{@code elementAtOrError} does not operate by default on a particular {@link Scheduler}.</dd>
</dl>

@param index
the zero-based index of the item to retrieve
@return a Single that emits the item at the specified position in the sequence emitted by the source
ObservableSource, or the default item if that index is outside the bounds of the source sequence
@throws IndexOutOfBoundsException
if {@code index} is less than 0
@see <a href="http://reactivex.io/documentation/operators/elementat.html">ReactiveX operators documentation: ElementAt</a>