finally 절에서는 return, break, continue를 쓰지 마세요

finally 절에서는 return, break, continue를 쓰지 마세요

finally 절에 return, break, continue 문이 들어가 있을 때 분석기가 이 lint 진단을 띄워줘요.

출처: Use of return/break/continue in a finally clause

본문

finally 절에 return, break, continue 문이 들어가 있으면 분석기가 이 진단을 만들어요. finally는 예외 처리와 상관없이 반드시 실행되는 블록이라, 여기서 흐름을 제어하면 예상 밖의 동작으로 이어지기 쉬워요.

다음 코드는 finally 블록 안에 return 문이 있어서 이 진단이 나와요.

void f(void Function() g) {
  try {
    g();
  } catch (e) {
    print(e);
  } finally {
    return;
  }
}

고치는 방법

그 문이 필요 없다면 그냥 제거하고, 블록이 비게 되면 finally 절도 함께 지우면 돼요.

void f(void Function() g) {
  try {
    g();
  } catch (e) {
    print(e);
  }
}

그 문이 필요하다면, finally 블록 밖으로 옮기면 돼요.

void f(void Function() g) {
  try {
    g();
  } catch (e) {
    print(e);
  }
  return;
}

더 알아보기