내일배움캠프

내일배움캠프 Unity - TIL : 25.04.17

달시_Dalsi 2025. 4. 17. 22:12
728x90

오늘 학습한 내용

1) UniTask에서 _ =와 .Forget()의 차이점

UniTask 비동기 메서드를 호출할 때, _ =와 .Forget() 모두 await를 안쓰는 방식이지만 예외 처리 및 용도에 차이가 있습니다.


문제 및 해결 과정

1) 문제 (UniTask를 실행할 때 _ =와 .Forget()의 차이점을 명확히 이해하지 못함)

비동기 메서드를 실행할 때 _ =와 .Forget() 중 어떤 것을 사용하는 것이 더 적절한지 혼동이 있었습니다.

 

시도한 해결 방법

  • 공식 문서 및 샘플 코드 확인
  • 테스트를 통해 예외 발생 시 로그 출력 여부 비교

결과

 

  • _ =는 단순 실행만 하며, 예외 발생 시 로그를 확인하기 어렵습니다.
  • .Forget()은 예외 콜백을 등록할 수 있어 디버깅에 더 용이합니다.

 


새롭게 알게 된 점

_ = MyAsyncMethod();

반환값을 무시하고 실행만 함. 예외가 발생해도 별도 로그 없이 무시됨. 디버깅 어려움

 

MyAsyncMethod().Forget();

UniTask 전용 방식. 예외 콜백 등록 가능. 예외 발생 시 로그로 확인 가능

// 예외 핸들링 불가
_ = MyAsyncMethod();

// 예외 핸들링 가능
MyAsyncMethod().Forget(ex => Debug.LogException(ex));
728x90