본문 바로가기
반응형

예외 처리3

코루틴을 사용한 안전한 예외처리 - 3 코틀린은 자바와 다르게 함수형 패러다임을 많이 지원해주고 있지만 완벽하게 함수형프로그래밍을 지원하는 것은 아니다. 함수형 패러다임이라고 하면 여러가지 철학,개념이 있지만 한마디로 하스켈의 방식을 따라 가는 것이라고 생각하면 좋다. 그래서 함수형 프로그래밍을 제대로 경험해보고 싶다면 하스켈을 학습해보라는 말이 있다. https://www.haskell.org/ Haskell Language Statically typed Every expression in Haskell has a type which is determined at compile time. All the types composed together by function application have to match up. If they don'.. 2022. 1. 14.
코루틴을 사용한 안전한 예외처리 - 2 앞의 글에서 이야기했던 두개의 코루틴(A, B)이 실행된다고 할 때 각각 걸리는 시간 A: 1초 B: 2초 A가 먼저 끝나고 B가 그 뒤에 예외가 발생함 B가 실행 중에 A에서 예외가 발생함 예외가 발생하면 어떻게 될까? 코루틴은 어떤 스코프에 있었는지에 따라 취소되거나 그렇지 않는다. 기본은 취소(Cancellation)가 된다. 아래 코루틴을 실행시키면 b가 실행되고 있는 동안 a가 먼저 예외를 발생시키고, 결과적으로 프린트 되는 것은 없다. 취소가 된 것이다. 그리고 main 스레드는 예외가 발생되어 프로그램이 종료된다. suspend fun parallelLaunchException_1() = coroutineScope { launch { // coroutine a delay(100) throw .. 2022. 1. 14.
코루틴을 사용한 안전한 예외처리 - 1 코루틴을 사용한 예외처리는 꽤나 까다롭다. 두개의 코루틴(A, B)이 실행된다고 할 때 아래 상황을 고려할 수 있다. 각각 걸리는 시간 A: 1초 B: 2초 A가 먼저 끝나고 B가 그 뒤에 예외가 발생함 B가 실행 중에 A에서 예외가 발생함 A, B 둘 다 예외가 발생함 A, B 를 실행시키고 있는 부모 코루틴에서 예외가 발생함 A, B 둘 중 하나에서 예외가 발생하였고 main스레드에 의해 runBlocking 안에서 실행되고 있을 때 결론부터 이야기하면 예외처리를 잘 하기 위해서는 국소적으로 try catch를 사용해주는 것이 권장된다. 아래는 CoroutineExceptionHandler에 나오는 docs 내용이다. If you need to handle exception in a specific .. 2022. 1. 14.
반응형