Skip to content

[Project Reactor] doOnError vs onErrorResume #4

Description

@dkdud9261

doOnError : 예외가 지나가는 곳

  • 예외가 발생했을 때 어떤 동작을 수행하는 데 사용된다.
  • 예외를 소비하거나 처리하는 용도로 사용되며, 예외를 처리한 후에도 스트림은 종료되지 않고 계속 진행된다.
    • 예외는 그대로 던져져 있는 상태라는 것. catch 된게 아님
  • 주로 로깅이나 메트릭 수집과 같은 부가적인 작업을 수행하기 위해 사용된다.
Mono.error<String>(RuntimeException("예외 발생"))
  .doOnError { throwable ->
    println()
  }
  .subscribe(
    { value -> println(value) },
    { error -> println(error) }
  )

onErrorResume : 예외 처리 끝

  • 예외가 발생했을 때 대체 스트림이나 값을 제공하여 계속 진행하는 데 사용한다.
  • 예외를 캐치하고 대체 스트림이나 값을 발생시켜 계속 진행된다.
  • 주로 예외를 특정한 값으로 대체하거나 다른 스트림으로 전환하는 데 사용된다.
Mono.error<String>(RuntimeException("예외 발생"))
  .onErrorResume { throwable ->
    println()
    Mono.just("hello")
  }
  .subscribe(
    { value -> println(value) },
    { error -> println(error) }
  )

+) 아래처럼 하면 에러 발생 시 둘 다에 들어감 / 순서 반대로하면 onErrorResume에만 들어감 그기서 끝나니까

.doOnError {}
.onErrorResume {}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions