반응형
flutter-zone

Flutter Zone이란? 종료되지 않게 예외처리 하기.

  • Zone이란?
  • try ~ catch와의 차이점
  • Zone 예제

 

플러터 플러그인을 쓰다보면

runZone()를 쓰는 경우가 종종 있습니다.

주로 아래처럼 쓰입니다.

 

flutter_crashlytics 플러그인

 

저도 처음에는 별 생각없이 적용했는데 점점 zone이 무엇인가 궁금해지더군요.

 

그래서 찾아봤습니다.

 

1. Zone이란?

zone은 프로그램이 예상치 못한 에러로부터 종료하는 걸 막을 때 쓰입니다. 일반적인 상황이면 프로그램이 종료되는 경우더라도 zone(존)을 쓰면 잘 돌아가게 되는 거죠.

 

1.1 try ~ catch를 사용한 경우

 

에러가 생기고 프로그램이 중단됩니다.

하지만 Zone을 쓰면 계속 프로그램이 실행됩니다.

 

1.2 Zone을 사용한 경우

 

명시적으로 Throw을 날렸지만 프로그램이 멀쩡히 돌아갑니다!

 

Zone은 실행되는 공간을 나눠서, 그 공간 안에 있는 한 안전하게 프로그램이 돌아가도록 합니다.

 

크래시리틱스에서 runZone()을 쓴 건 정말 당연했네요. 크래시가 발생하더라도 이를 남기려면 프로그램이 종료되면 안되니까요.

 

Zone을 쓰는 예제를 몇개 더 적어보겠습니다.

 

2.1 Stream이랑 Zone 같이 써보기 - 1

 

 

2.2 Stream이랑 Zone 같이 써보기 - 2

 

숫자 11때 에러가 생기지만 프로그램이 강제적으로 종료되지 않습니다.

 

마무리

이번 글에선 Zone에 대해 알아보았습니다.

Zone을 쓰면 종료 되지 않아야 되는 상황을 다루기가 쉬워집니다.

무작정 runZone()에 넣는 건 안 좋은 습관이지만, Zone을 쓰면 예측하기 어려운 상황을 다룰 때 도움이 되겠네요.

 

참고글 : Zone에 관하여 (https://www.dartlang.org/articles/libraries/zones)

참고영상 : Tensor Programming채널의 Zone, Microtask ( https://www.youtube.com/watch?time_continue=1083&v=pHpvfaanrbw )

반응형

+ Recent posts