Flow .catch
FlowのcatchはSuspend FunctionのCancellationExceptionをcatchしません.すなわち,Flow内のSuspend Functioniは通常通りCancelすることが可能です.
try-catch
try-catchはCancellationExceptionをcatchしてしまいます.そのため,通常はCancellationExceptionのみthrowするように冗長なコードを記載する必要があります.
try{ //do something }catch(e: Exception){ if(e is CancellationException) throw e // only throw CancellationException //do something when error }
なのでFlowと併用する場合には,Flow.catchを使用するほうが楽に可読性があがります