Flow Exception Transparency(예외 투명성)
·
Study/Kotlin
예외 투명성이라는 개념을 이해하기 위해 예시를 보자.suspend fun main() = coroutineScope { flow { try { emit(1) } catch (e: Exception) { println("Catch exception in Flow Builder") } }.collect { throw Exception("Exception in collect") }}이렇게 생긴 코드를 실행하면 과연 예외는 어떻게 처리될까? 이전까지의 내용을 봤을 때, 예외가 처리되지 않고 앱이 크래시가 될것으로 예상한다. 하지만 놀랍게도 try-catch에서 예외가 처리되어 앱 크래시가 발생하지 않는다. ..
Flow Exception Handling 살펴보기
·
Study/Kotlin
Flow가 종료되는 방식 이해하기Flow에서는 기본적으로 무슨 일이 일어날까? 값을 emit하거나 Flow 자체가 완료되는 것이다. 여기서 Flow가 완료될 때는 또 다시 두 가지 경우가 있다. 바로, 정상적으로 완료되거나 예외와 함께 종료되는 경우이다. .onCompletion { cause -> if (cause == null) { println("Flow completed successfully") }}만약 cause가 null인 경우, Flow가 정상적으로 종료된 것이고반대로 null이 아니라면 예외와 함께 종료된 것이다. Flow 내부에서 예외가 발생했을 때val someFlow = flow { emit("1") emit("2") throw Exception("Network ..
AutoLayout Minimum Width 비교하기
·
Study/iOS
이번에는 Minimum Width를 마주하게 되었다. 이게 무슨 뜬금없는 소리일까 싶을 수도 있겠다. 배경AutoLayout을 사용해보던 중, UILabel width를 100과 같은 특정 값을 주게 되면Localization Issue 경고가 발생하는데 Xcode에서 3가지 옵션을 제안해준다. 제약조건을 삭제할 것인지,Current Width 혹은 Minimum Width 이상으로 설정할 것인지 선택하면 된다. 당연히 아래 두 개 옵션 중 하나를 선택해야 했는데무슨 차이가 있을까 싶었다. 비교해보기Current Width설명에는 텍스트가 더 길어져도 현재 레이아웃을 유지하며라벨 너비가 늘어날 수 있게 허용한다고 되어있다. 그럼 실제로 스토리보드에는 어떤 값이 입력될까?내가 기존 값을 100으로 설정했는..