[java] RxJava의 에러 핸들링
RxJava는 자바에서 비동기 및 이벤트 기반 프로그래밍을 수행하기 위한 라이브러리입니다. 그러나 리액티브 스트림에서 에러를 처리해야 하는 경우가 발생할 수 있습니다. 이 문서에서는 RxJava에서의 에러 핸들링에 대해 알아보겠습니다.
에러 핸들링 방법
onErrorResumeNext
: 에러 발생 시 다른 Observable로 대체합니다.Observable.just(1, 2, 3) .map(number -> { if(number == 2) { throw new RuntimeException("Error Occurred"); } return number; }) .onErrorResumeNext(Observable.just(4, 5, 6)) .subscribe(number -> System.out.println(number), error -> System.out.println("Error: " + error));
onErrorReturn
: 에러 발생 시 기본값을 반환합니다.Observable.just(1, 2, 3) .map(number -> { if(number == 2) { throw new RuntimeException("Error Occurred"); } return number; }) .onErrorReturn(error -> 999) .subscribe(number -> System.out.println(number), error -> System.out.println("Error: " + error));
onError
: 에러 이벤트를 처리하고 그 다음 작업을 수행합니다.Observable.just(1, 2, 3) .map(number -> { if(number == 2) { throw new RuntimeException("Error Occurred"); } return number; }) .doOnError(error -> System.out.println("Error: " + error)) .subscribe(number -> System.out.println(number), error -> System.out.println("Error: " + error));
예외 전파
때로는 에러를 그대로 전파하여 외부에서 처리해야 하는 경우가 있습니다. 이를 위해서는 onError
를 사용하면 됩니다.
Observable.just(1, 2, 3)
.map(number -> {
if(number == 2) {
throw new RuntimeException("Error Occurred");
}
return number;
})
.subscribe(number -> System.out.println(number),
error -> {
System.out.println("Error: " + error);
throw new RuntimeException(error);
});
결론
RxJava에서의 에러 핸들링은 다양한 방법으로 수행할 수 있습니다. onErrorResumeNext
, onErrorReturn
, onError
메소드를 이용하여 에러를 처리하거나 전파할 수 있습니다. 올바른 에러 핸들링은 애플리케이션의 안정성과 사용자 경험에 중요한 역할을 합니다.
```
참고 자료
- RxJava 공식 문서: https://github.com/ReactiveX/RxJava