2026-06-16(수) 예외처리 사용기준 checkf, ensureMsgf, IsValid

조범근·2026년 6월 17일

TIL

목록 보기
72/83

C++ Week 16

Study

멀티플레이 개발



Today I Learned


Unreal Multiplay

1. checkf, ensureMsgf, IsValid 사용기준

언리얼에서 객체가 유효한지 검사할 때는 상황에 따라 checkf, ensureMSgf, if(IsValid(...))를 구분해서 사용한다.

1-1. checkf

checkf(
IsValid(HUDWidgetClass), 
TEXT("HUDWidgetClass must be assigned.") 
);

조건이 거짓이면 오류 메시지와 호출 스택을 남기고 실행을 중단

checkf는 단순한 예외 처리가 아니라, 정상적인 코드 흐름에서는 절대로 실패해서는 안 되는 전제 조건을 검사할 때 사용한다

예를 들어 특정 클래스가 반드시 설정되어 있어야만 객체 자체가 정상적으로 동작할 수 있다면 사용할 수 있다.

다만 실패하면 에디터까지 종료될 수 있으므로 자주 사용하는 것은 좋지 않음

1-2. ensureMsgf

if (!ensureMsgf( 
IsValid(HUDWidgetClass), T
EXT("HUDWidgetClass is not assigned.") 
)) 
{ 
return; 
}

조건이 거짓이면 오류 메시지와 호출 스택을 남기지만, checf처럼 즉시 프로그램을 종료하지는 않는다.

개발자의 설정 실수를 확인하고 싶지만 에디터까지 종료시키고 싶지 않을때 유용하다. 블루프린트에서 위젯 클래스를 할당하지않거나, 데이터 에셋을 연결하지않는 실수에서 사용 가능하다.

ensureMsgf는 문제를 알려줄 뿐 이후 실행을 자동으로 막아주지는 안ㅇㅎ으므로, 필요한 경우 직접 return 해야 한다.

1-3. if + IsValid + UE_LOG

if (!IsValid(PlayerState)) 
{ 
	UE_LOG( LogTemp, Warning, TEXT("PlayerState is invalid.") ); 
    
    return; 
}

실행 중 정상적으로 발생할 가능성이 있는 상황에는 일반적인 방어 코드를 사용한다.

이 경우는 프로그램을 강제로 종료할 이유가 없으므로 로그를 남기고 안전하게 함수에서 빠져나간다.

1-4 사용기준

사용 기준
절대로 실패하면 안 되는 코드 불변조건
→ checkf

개발자의 설정 실수이며 호출 스택을 확인하고 싶음
→ ensureMsgf + return

실행 중 충분히 발생할 수 있는 상황
→ if + IsValid + UE_LOG + return

0개의 댓글