UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UnifiedError.h File Reference

Go to the source code of this file.

Classes

struct  deferred_false< typename >
 
class  TErrorStructFeatures< T >
 
struct  TStringLiteralWithColonsReplaced< N >
 
struct  TStringLiteralWithSpacesReplaced< N >
 
class  UE::UnifiedError::IErrorDetails
 
class  UE::UnifiedError::FManditoryErrorDetails
 FManditoryErrorDetails every FError needs to be initialized with one of these, it contains core information about the error including errorcodestring and module name. More...
 
class  UE::UnifiedError::FErrorDetailsRegistry
 
class  UE::UnifiedError::FRefCountedErrorDetails
 FRefCountedErrorDetails; base implementation of refcounting for IErrorDetails, this is used for heap allocated IErrorDetails implementations. More...
 
class  UE::UnifiedError::FDynamicErrorDetails
 FDynamicErrorDetails; base implementation of inner error details, for use by derived classes to reduce unnessisary reimplementation. More...
 
class  UE::UnifiedError::TErrorDetails< T >
 
class  UE::UnifiedError::FError
 
class  UE::UnifiedError::FStaticErrorDetails
 FStaticErrorDetails; static error details and members are statically allocated Every error which uses DEFINE_ERROR will have FStaticErrorDetails generated for it Can not rely on it to be available for every error as some Error conversion functions will not use pregenerated errors or error codesF Use FError::GetErrorDetails to discover FStaticErrorDetails. More...
 

Namespaces

namespace  UE
 
namespace  UE::UnifiedError
 
namespace  UE::UnifiedError::ErrorRegistry
 

Macros

#define UE_DECLARE_ERRORSTRUCT_FEATURES(DetailsNameSpace, DetailsStructName)
 
#define UE_DECLARE_ERROR_DETAILS_INTERNAL(DetailsNamespace, TypeName)
 
#define UE_DECLARE_FERROR_DETAILS_ABSTRACT(DetailsNamespace, TypeName)
 
#define UE_DECLARE_FERROR_DETAILS(DetailsNamespace, TypeName)
 
#define UE_DECLARE_ERROR_MODULE(DeclareApi, ModuleName)
 
#define UE_DEFINE_ERROR_MODULE(ModuleName)
 
#define UE_DECLARE_ERROR_INTERNAL(DeclareApi, ErrorName, ErrorCode, ModuleName, FormatString)
 
#define UE_DEFINE_ERROR(ErrorName, ModuleName)
 
#define UE_DECLARE_ERROR(DeclareApi, ErrorName, ErrorCode, ModuleName, FormatString)
 
#define UE_DECLARE_ERROR_ONEPARAM(DeclareApi, ErrorName, ErrorCode, ModuleName, FormatString, ParamOneType, ParamOneName, ParamOneDefault)
 
#define UE_DECLARE_ERROR_TWOPARAM(DeclareApi, ErrorName, ErrorCode, ModuleName, FormatString, ParamOneType, ParamOneName, ParamOneDefault, ParamTwoType, ParamTwoName, ParamTwoDefault)
 

Enumerations

enum class  UE::UnifiedError::EDetailFilter : uint8 {
  UE::UnifiedError::IncludeInSerialize = 1 << 0 , UE::UnifiedError::IncludeInAnalytics = 1 << 1 , UE::UnifiedError::IncludeInContextLogMessage = 1 << 2 , UE::UnifiedError::IncludeInLogMessage = 1 << 3 ,
  UE::UnifiedError::Default = IncludeInSerialize | IncludeInContextLogMessage , UE::UnifiedError::None = 0x00 , UE::UnifiedError::All = 0xff
}
 

Functions

constexpr uint64 CompileTimeHashString (const char *String)
 
 UE::UnifiedError::ENUM_CLASS_FLAGS (EDetailFilter)
 
CORE_API uint32 UE::UnifiedError::ErrorRegistry::RegisterModule (const FAnsiStringView ModuleName)
 
CORE_API int32 UE::UnifiedError::ErrorRegistry::RegisterErrorCode (const FAnsiStringView ErrorName, int32 ModuleId, int32 ErrorCode)
 
CORE_API void UE::UnifiedError::SerializeForLog (FCbWriter &Writer, const class FError &Error)
 
void UE::UnifiedError::SerializeBasicToCb (FCbWriter &Writer, const FUtf8StringView &PropertyName, const FStringView &Value)
 
void UE::UnifiedError::SerializeBasicToCb (FCbWriter &Writer, const FUtf8StringView &PropertyName, const FUtf8StringView &Value)
 
void UE::UnifiedError::SerializeBasicToCb (FCbWriter &Writer, const FUtf8StringView &PropertyName, const int32 &Value)
 
void UE::UnifiedError::SerializeBasicToCb (FCbWriter &Writer, const FUtf8StringView &PropertyName, const uint32 &Value)
 
void UE::UnifiedError::SerializeBasicToCb (FCbWriter &Writer, const FUtf8StringView &PropertyName, const int64 &Value)
 
void UE::UnifiedError::SerializeBasicToCb (FCbWriter &Writer, const FUtf8StringView &PropertyName, const uint64 &Value)
 
void UE::UnifiedError::SerializeBasicToCb (FCbWriter &Writer, const FUtf8StringView &PropertyName, const FText &Value)
 
CORE_API FString LexToString (const UE::UnifiedError::FError &Error)
 

Macro Definition Documentation

◆ UE_DECLARE_ERROR

#define UE_DECLARE_ERROR (   DeclareApi,
  ErrorName,
  ErrorCode,
  ModuleName,
  FormatString 
)
Value:
UE_DECLARE_ERROR_INTERNAL(DeclareApi, ErrorName, ErrorCode, ModuleName, FormatString) \
namespace UE::UnifiedError { namespace ModuleName { namespace ErrorName {\
inline FError MakeError() { return FError(UE::UnifiedError::ModuleName::GetStaticModuleId(), GetErrorCodeId(), TRefCountPtr<const UE::UnifiedError::FManditoryErrorDetails>(GetStaticErrorDetails().GetReference())); } \
template<typename ErrorContextType> \
inline FError MakeError(ErrorContextType&& Ctx, EDetailFilter DetailFilter = EDetailFilter::Default) \
{\
FError Error(UE::UnifiedError::ModuleName::GetStaticModuleId(), GetErrorCodeId(), TRefCountPtr<const UE::UnifiedError::FManditoryErrorDetails>(GetStaticErrorDetails().GetReference())); \
Error.PushErrorContext(MoveTemp(Ctx), DetailFilter); \
return Error; \
}\
}}}
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_DECLARE_ERROR_INTERNAL(DeclareApi, ErrorName, ErrorCode, ModuleName, FormatString)
Definition UnifiedError.h:684
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
UE_REWRITE TValueOrError_ErrorProxy< ArgTypes... > MakeError(ArgTypes &&... Args UE_LIFETIMEBOUND)
Definition ValueOrError.h:41
Definition RefCounting.h:454
Definition IoStatusError.cpp:13

◆ UE_DECLARE_ERROR_DETAILS_INTERNAL

#define UE_DECLARE_ERROR_DETAILS_INTERNAL (   DetailsNamespace,
  TypeName 
)
Value:
inline static constexpr FAnsiStringView StaticGetErrorDetailsTypeName() \
{\
return #DetailsNamespace"::"#TypeName;\
}\
virtual const FAnsiStringView GetErrorDetailsTypeName() const override \
{\
return StaticGetErrorDetailsTypeName();\
}\
{\
return Replaced.Str;\
}\
virtual const FAnsiStringView GetErrorDetailsTypeNameForLog() const override\
{\
}\
virtual uint64 GetErrorDetailsTypeId() const \
{ \
return StaticGetErrorDetailsTypeId(); \
}\
static uint64 StaticGetErrorDetailsTypeId() \
{ \
return CompileTimeHashString(StaticGetErrorDetailsTypeName().GetData()); \
}
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
auto GetData(const TStringConversion< Converter, DefaultConversionSize > &Conversion) -> decltype(Conversion.Get())
Definition StringConv.h:802
constexpr uint64 CompileTimeHashString(const char *String)
Definition UnifiedError.h:135
Definition UnifiedError.h:68

◆ UE_DECLARE_ERROR_INTERNAL

#define UE_DECLARE_ERROR_INTERNAL (   DeclareApi,
  ErrorName,
  ErrorCode,
  ModuleName,
  FormatString 
)
Value:
namespace UE::UnifiedError { namespace ModuleName { namespace ErrorName {\
static constexpr int32 DeclaredErrorCode = ErrorCode; \
DeclareApi const FError& GetStaticError(); \
DeclareApi bool OfType(const FError& Other); \
static inline FText GetFormatString() { return FormatString; } \
}}}
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
Definition Text.h:385

◆ UE_DECLARE_ERROR_MODULE

#define UE_DECLARE_ERROR_MODULE (   DeclareApi,
  ModuleName 
)
Value:

◆ UE_DECLARE_ERROR_ONEPARAM

#define UE_DECLARE_ERROR_ONEPARAM (   DeclareApi,
  ErrorName,
  ErrorCode,
  ModuleName,
  FormatString,
  ParamOneType,
  ParamOneName,
  ParamOneDefault 
)
Value:
UE_DECLARE_ERROR_INTERNAL(DeclareApi, ErrorName, ErrorCode, ModuleName, FText::FromString(UTF8TEXT("{"#ModuleName"_F"#ErrorName"}")) ) \
namespace UE::UnifiedError { namespace ModuleName { \
struct F##ErrorName \
{\
};\
}}\
UE_DECLARE_ERRORSTRUCT_FEATURES(ModuleName, F##ErrorName);\
inline void SerializeForLog(FCbWriter& Writer, const UE::UnifiedError::ModuleName::F##ErrorName& Context)\
{\
Writer.BeginObject();\
UE::SerializeLogFormat(Writer, FormatString); \
UE::UnifiedError::SerializeBasicToCb(Writer, ANSITEXTVIEW(#ParamOneName), Context.ParamOneName);\
Writer.EndObject();\
}\
namespace UE::UnifiedError { namespace ModuleName { \
namespace ErrorName { \
{ \
FError Error = FError(UE::UnifiedError::ModuleName::GetStaticModuleId(), UE::UnifiedError::ModuleName::ErrorName::GetErrorCodeId(), UE::UnifiedError::ModuleName::ErrorName::GetStaticErrorDetails().GetReference()); \
F##ErrorName Context = {ParamOneName}; \
Error.PushErrorContext(MoveTemp(Context)); \
return Error; \
} \
}}}
#define UTF8TEXT(x)
Definition Platform.h:1286
void SerializeForLog(FCbWriter &Writer, const FIoStatus &Status)
Definition IoStatus.cpp:107
#define ANSITEXTVIEW(str)
Definition StringView.h:555
Definition CompactBinaryWriter.h:68
static CORE_API FText FromString(const ANSICHAR *String)
Definition Text.cpp:1081
Definition UnifiedError.h:23
const FName ModuleName("AssetRegistry")

◆ UE_DECLARE_ERROR_TWOPARAM

#define UE_DECLARE_ERROR_TWOPARAM (   DeclareApi,
  ErrorName,
  ErrorCode,
  ModuleName,
  FormatString,
  ParamOneType,
  ParamOneName,
  ParamOneDefault,
  ParamTwoType,
  ParamTwoName,
  ParamTwoDefault 
)
Value:
UE_DECLARE_ERROR_INTERNAL(DeclareApi, ErrorName, ErrorCode, ModuleName, FText::FromString(UTF8TEXT("{"#ModuleName"_F"#ErrorName"}")) ) \
namespace UE::UnifiedError { namespace ModuleName { \
struct F##ErrorName \
{\
};\
}}\
UE_DECLARE_ERRORSTRUCT_FEATURES(ModuleName, F##ErrorName);\
inline void SerializeForLog(FCbWriter& Writer, const UE::UnifiedError::ModuleName::F##ErrorName& Context)\
{\
Writer.BeginObject();\
UE::SerializeLogFormat(Writer, FormatString); \
UE::UnifiedError::SerializeBasicToCb(Writer, ANSITEXTVIEW(#ParamOneName), Context.ParamOneName);\
UE::UnifiedError::SerializeBasicToCb(Writer, ANSITEXTVIEW(#ParamTwoName), Context.ParamTwoName);\
Writer.EndObject();\
}\
namespace UE::UnifiedError { namespace ModuleName { \
namespace ErrorName { \
{ \
FError Error = FError(UE::UnifiedError::ModuleName::GetStaticModuleId(), UE::UnifiedError::ModuleName::ErrorName::GetErrorCodeId(), UE::UnifiedError::ModuleName::ErrorName::GetStaticErrorDetails().GetReference()); \
F##ErrorName Context = {ParamOneName, ParamTwoName}; \
Error.PushErrorContext(MoveTemp(Context)); \
return Error; \
} \
}}}

◆ UE_DECLARE_ERRORSTRUCT_FEATURES

#define UE_DECLARE_ERRORSTRUCT_FEATURES (   DetailsNameSpace,
  DetailsStructName 
)
Value:
template<>\
class TErrorStructFeatures<UE::UnifiedError::DetailsNameSpace::DetailsStructName>\
{\
public:\
{\
}\
{\
return ANSITEXTVIEW("TErrorDetails<"#DetailsNameSpace"::"#DetailsStructName">");\
}\
{\
}\
};
static const FAnsiStringView GetErrorContextTypeNameAsString()
Definition UnifiedError.h:36
static const FAnsiStringView GetErrorDetailsTypeNameAsString()
Definition UnifiedError.h:30
static const FAnsiStringView GetErrorDetailsLogEntryNameAsString()
Definition UnifiedError.h:25
Definition AdvancedWidgetsModule.cpp:13

◆ UE_DECLARE_FERROR_DETAILS

#define UE_DECLARE_FERROR_DETAILS (   DetailsNamespace,
  TypeName 
)
Value:
public:\
friend IErrorDetails* Create();\
inline static IErrorDetails* Create()\
{\
return new TypeName();\
}

◆ UE_DECLARE_FERROR_DETAILS_ABSTRACT

#define UE_DECLARE_FERROR_DETAILS_ABSTRACT (   DetailsNamespace,
  TypeName 
)

◆ UE_DEFINE_ERROR

#define UE_DEFINE_ERROR (   ErrorName,
  ModuleName 
)
Value:
namespace UE::UnifiedError { namespace ModuleName { namespace ErrorName {\
const int32 ErrorCodeId = UE::UnifiedError::ErrorRegistry::RegisterErrorCode(GetStaticErrorName(), UE::UnifiedError::ModuleName::GetStaticModuleId(), DeclaredErrorCode);\
const FText DeclaredFormatString = GetFormatString(); \
{\
return ErrorCodeId;\
}\
{ \
static const auto Reference = TStringLiteralWithSpacesReplaced(#ErrorName); \
return Reference.Str; \
}\
{\
static FStaticErrorDetails StaticErrorDetails(GetStaticErrorName(), UE::UnifiedError::ModuleName::GetStaticModuleName(), DeclaredFormatString);\
}\
const FError& GetStaticError() \
{\
static FError StaticError = MakeError();\
return StaticError;\
}\
bool OfType(const FError& Other) \
{\
return UE::UnifiedError::ModuleName::GetStaticModuleId() == Other.GetModuleId() && ErrorCodeId == Other.GetErrorCode(); \
}\
}}}
CORE_API int32 RegisterErrorCode(const FAnsiStringView ErrorName, int32 ModuleId, int32 ErrorCode)
Definition UnifiedError.cpp:367
Definition UnifiedError.h:103

◆ UE_DEFINE_ERROR_MODULE

#define UE_DEFINE_ERROR_MODULE (   ModuleName)
Value:
namespace UE::UnifiedError { namespace ModuleName {\
{ \
static const auto Reference = TStringLiteralWithSpacesReplaced(#ModuleName); \
return Reference.Str; \
}\
}}
CORE_API uint32 RegisterModule(const FAnsiStringView ModuleName)
Definition UnifiedError.cpp:361

Function Documentation

◆ CompileTimeHashString()

constexpr uint64 CompileTimeHashString ( const char String)
constexpr

◆ LexToString()

CORE_API FString LexToString ( const UE::UnifiedError::FError Error)