ネイティブライブラリのエラーを検知する

ネイティブライブラリで発生した警告やエラーを検知して、特定のデリゲートに登録した関数を呼び出せます。
関数内では、エラーIDやエラーメッセージを受け取ることができます。

BP で検知する

criware_ue4_error_callback1_L.jpg

C++ で検知する

#include "CriWareError.h"
/* Function to register in delegate */
void UMyScript::NativeErrorCallback(const FCriWareErrorInfo& ErrorInfo)
{
 if (ErrorInfo.ErrorType == ECriWareErrorType::Warning)
 {
  return;
 }
 if (ErrorInfo.ErrorType == ECriWareErrorType::Error)
 {
  UE_LOG(LogTemp, Error, TEXT("An error has occurred."));
 }
}
UMyScript::UMyScript()
{
 auto* ErrorInstance = UCriWareError::GetCriWareError();
 if (IsValid(ErrorInstance))
 {
  ErrorInstance->OnCriWareError.AddDynamic(this, &UMyScript::NativeErrorCallback);
 }
}
注意
  1. ネイティブライブラリでエラーが発生すると、エラーログが出力されるのでユーザー側でログ出力の実装を行う必要はありません。
  2. スレッドセーフを実現するために実際の呼び出しタイミングから遅延が発生することを確認しています。
    メインスレッドでデリゲートの実行を行っているため、動作フレームレートの影響を受けるので注意してください。