Adds error handling during `bindNext`.

This commit is contained in:
Krunoslav Zaher 2015-12-19 14:38:41 +01:00
parent 637b19947c
commit 536128f8e8
2 changed files with 22 additions and 15 deletions

View File

@ -16,7 +16,8 @@ extension ObservableType {
/**
Creates new subscription and sends elements to observer.
In this form it's equivalent to `subscribe` method, but it communicates intent better.
In this form it's equivalent to `subscribe` method, but it communicates intent better, and enables
writing more consistent binding code.
- parameter observer: Observer that receives events.
- returns: Disposable object that can be used to unsubscribe the observer.
@ -29,8 +30,8 @@ extension ObservableType {
/**
Creates new subscription and sends elements to variable.
In release mode error will be logged in case attempting to bind an error to variable.
In debug mode exception will be thrown in case attempting to bind error to variable.
In case error occurs in debug mode, `fatalError` will be raised.
In case error occurs in release mode, `error` will be logged.
- parameter variable: Target variable for sequence elements.
- returns: Disposable object that can be used to unsubscribe the observer.
@ -42,7 +43,12 @@ extension ObservableType {
case let .Next(element):
variable.value = element
case let .Error(error):
bindingErrorToVariable(error)
let error = "Binding error to variable: \(error)"
#if DEBUG
rxFatalError(error)
#else
print(error)
#endif
case .Completed:
break
}
@ -79,13 +85,23 @@ extension ObservableType {
/**
Subscribes an element handler to an observable sequence.
Subscribes an element handler to an observable sequence.
In case error occurs in debug mode, `fatalError` will be raised.
In case error occurs in release mode, `error` will be logged.
- parameter onNext: Action to invoke for each element in the observable sequence.
- returns: Subscription object used to unsubscribe from the observable sequence.
*/
@warn_unused_result(message="http://git.io/rxs.ud")
public func bindNext(onNext: E -> Void) -> Disposable {
return subscribeNext(onNext)
return subscribe(onNext: onNext, onError: { error in
let error = "Binding error to variable: \(error)"
#if DEBUG
rxFatalError(error)
#else
print(error)
#endif
})
}
}

View File

@ -228,15 +228,6 @@ func bindingErrorToInterface(error: ErrorType) {
#endif
}
func bindingErrorToVariable(error: ErrorType) {
let error = "Binding error to variable: \(error)"
#if DEBUG
rxFatalError(error)
#else
print(error)
#endif
}
// MARK: Abstract methods
@noreturn func rxAbstractMethodWithMessage(message: String) {