Lidar com erros de sincronização e tempos limite - .NET SDK
Nesta página
O Device Sync representa erros por meio de SessionExceptions. Além das propriedades de exceção padrão, você tem acesso a um ErrorCode que contém informações sobre o tipo do erro e permite que você tenha lógica de tratamento fortemente digitada.
config.OnSessionError = (session, sessionException) => { switch (sessionException.ErrorCode) { // See https://www.mongodb.com/pt-br/docs/realm-sdks/dotnet/latest/reference/Realms.Sync.Exceptions.ErrorCode.html // for a list of all error codes case ErrorCode.BadQuery: break; } };
Observação
Informações adicionais de exceção
Por motivos de segurança, o App Services pode enviar apenas uma quantidade mínima de informações sobre uma exceção, mas os registros do lado do servidor conterão mais detalhes. Nesses casos, o HelpLink A propriedade na exceção contém um link para a entrada de registro associada.
Dica
Para obter uma lista de erros comuns do Device Sync e como gerenciá-los, consulte Erros de sincronização na documentação do Atlas App Services Device Sync .
Definir o nível de log do cliente
Para controlar quais mensagens são registradas pelo registrador do cliente, use LogLevel:
Logger.LogLevel = LogLevel.Debug;
Dica
Para diagnosticar e solucionar erros ao desenvolver seu aplicativo, defina o nível de registro como debug
ou trace
. Para sistemas de produção, diminua o nível de registro para melhorar o desempenho.
Personalizar a função de registro
Para definir uma função de registrador personalizada, defina Logger.Default para uma função de registrador personalizada.
using Realms.Logging; Logger.LogLevel = LogLevel.All; // customize the logging function: Logger.Default = Logger.Function(message => { // Do something with the message });
Lidar com tempos limite
Durante as sessões de sincronização, os eventos podem atingir o tempo limite sem lançar uma exceção. Você pode definir o CancelAsyncOperationsOnNonFatalErrors como true
para que esses eventos lancem uma exceção com a qual você possa manipular. O código a seguir mostra um exemplo de definição da propriedade CancelAsyncOperationsOnNonFatalErrors
e 3 eventos que lançarão uma exceção se atingirem o tempo limite:
var config = new FlexibleSyncConfiguration(app.CurrentUser!) { CancelAsyncOperationsOnNonFatalErrors = true, }; // These operations will throw an exception // on timeout or other transient sync session errors. var realm = await Realm.GetInstanceAsync(config); var session = realm.SyncSession; await session.WaitForUploadAsync(); await session.WaitForDownloadAsync();