Поиск ошибок базы данных в реальном времени - Unity3D - PullRequest
0 голосов
/ 22 января 2020

Сценарий :

Необходимо знать тип ошибки при наличии исключения. Я не смог найти подходящую ссылку.

Источники :

Код

Получение необработанного значения из базы данных

string _error = string.Empty;
await RootDB.Child(_node).GetValueAsync()
   .ContinueWith(
   (_task) =>
   {
       if (_task.Exception != null)
       {
           Debug.Log("Exception Found in " + _node + " | " + _task.Exception.Message);
           _error = CloudErrorHandle.DatabaseErrorMessageFor(_task.Exception.InnerExceptions);
       }
       else if (_task.IsCanceled == true)
       {
           Debug.Log(_node + " | is canceled ");
       }
       else if (_task.IsFaulted == true)
       {
           Debug.Log(_node + " | is Faulted ");
       }
       else if (_task.IsCompleted == true)
       {
           Debug.Log(_node + "| is Completed");
           DataSnapshot _snapShot = _task.Result;
           if (_snapShot.Exists == true)
           {
              // Get the value _snapShot.GetRawJsonValue();
           }
           else
           {
                Debug.Log("Snapshot DOES NOT Exist for " + _node);
           }
       }
  });

// Из CloudErrorHandle

Запрос

  1. Правильный ли способ получить ошибку при возникновении исключения?
  2. Будет ли несколько ошибки, поскольку 'InnerExceptions' повторяется?
  3. Я понимаю, что при возникновении каких-либо проблем при взаимодействии с RL-базой данных исключение никогда не будет иметь значение

Спасибо

1 Ответ

1 голос
/ 23 января 2020

Если я правильно понимаю ваш вопрос, ваш код должен выглядеть следующим образом:

var _error = null;
var child = RootDB.Child(_node);

try
{
    var result = await child.GetValueAsync();

    Debug.Log(_node + "| is Completed");
    DataSnapshot _snapShot = result;
    if (_snapShot.Exists == true)
    {
        // Get the value _snapShot.GetRawJsonValue();
    }
    else
    {
        Debug.Log("Snapshot DOES NOT Exist for " + _node);
    }

}
catch (OperationCanceledException ex)
{
    Debug.Log(_node + " | is canceled ");
}
catch (Exception ex)
{
    Debug.Log("Exception Found in " + _node + " | " + ex.Message);
    _error = CloudErrorHandle.DatabaseErrorMessageFor(ex.InnerExceptions);
}
...