unawaited_return_in_try_block: try 블록 안에서 'await' 없이 Future를 반환하지 말아요

unawaited_return_in_try_block: try 블록 안에서 'await' 없이 Future를 반환하지 말아요

분석기가 내보내는 진단에는 이름이 있어요. unawaited_return_in_try_blockasync 함수의 try 블록 안에서 Futureawait하지 않고 반환할 때 알려주는 진단이에요. 원문의 요지는 "try 블록 안에서 'await' 없이 'Future'를 반환하고 있다"는 내용이에요.

출처: unawaited_return_in_try_block

본문

설명

분석기는 async 함수에서 try 블록 안에 있는 Future를, 돌려받은 Futureawait하지 않고 반환할 때 이 진단을 만들어요.

예시

다음 코드는 futureString이 돌려주는 Futureawait 없이 반환해서 이 진단을 만들어요. 이렇게 하면 Future가 던지는 예외가 catch 블록에 잡히지 않아서, 예상치 못한 동작이 생길 수 있어요.

Future<String> futureString(Future<String> value) async {
  try {
    return value;
  } catch (e) {
    print(e);
    return 'default';
  }
}

흔한 해결 방법

반환하는 Future 앞에 await를 붙여요.

Future<String> futureString(Future<String> value) async {
  try {
    return await value;
  } catch (e) {
    print(e);
    return 'default';
  }
}

더 알아보기